0

我在 grails 中重定向上传的图像,如下所示:

控制器:

    def upload() {
    def f = request.getFile('myFile')
    if (f == null | f.empty) {
        flash.default = "file cannot be empty"
        errors.getFieldError("cannot be empty")
        return
    }
    def fName = f.getOriginalFilename()
    def picture = new Picture(orgName: fName, urlOrg: "http://localhost/"+fName)
    f.transferTo(new File('/Users/sagarmichael/Desktop/photoUpload/'+fName))
    println("saved")
    redirect(action: 'test', params: [url1:picture.urlOrg] )


}

def test(){
    System.out.println(params.url1)
            [url1:params.url1]

}

我希望这会将 url1 发送到我的名为 test 的视图中,我有这个:

<img src="${url1}"/>

我希望这会在屏幕上显示图像。我正确设置了 apache2 配置,当我去

http://localhost/<imageName> 

它工作正常。

我在浏览器的 url 栏中得到的是:

http://localhost:8080/FYP/profile/test?url1=http%3A%2F%2Flocalhost%2Flonglogo3.png

有任何想法吗?

4

3 回答 3

0

尝试

render(view:"test", model: [url1:picture.urlOrg])

或者

chain(action: "test", model: [url1:picture.urlOrg])
于 2012-09-13T18:36:29.450 回答
0

如果您使用该redirect方法,params它们将出现在 url 中。要省略这一点,您需要以另一种方式来设计代码。

查看您的代码,您似乎上传了一些图像并需要显示结果。我建议您只将图像的名称传递给您的其他方法并动态安装链接(并不总是本地主机,对吗?)。输出网址将是:

http://localhost:8080/FYP/profile/test?image=longlogo3.png

如果您也需要省略图像的名称,则必须将其存储在会话中。

于 2012-09-13T17:52:16.107 回答
0

您正在混合模型和 URL 参数。如果你真的需要这样,你必须在 test() 动作中将 param 'url1' 的内容放入模型中:

def test() {
    return [ 'url1': params.url1 ]
}

我希望你明白这一点,我绝对建议重新设计代码;-)

于 2012-09-13T16:44:56.467 回答