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が送信されます。

<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

モデルとURLパラメータを混在させています。本当にこのようにする必要がある場合は、パラメータ'url1'のコンテンツをtest()アクションのモデルに配置する必要があります。

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

私はあなたが要点を理解することを願っています、私は間違いなくコードを再設計することをお勧めします;-)

于 2012-09-13T16:44:56.467 に答える
0

redirectこのメソッドを使用paramsすると、URLに表示されます。これを省略するには、コードを設計するために別の方法で考える必要があります。

コードを見ると、画像のアップロードを行っており、結果を表示する必要があるようです。イメージの名前だけを他のメソッドに渡して、リンクを動的にマウントすることをお勧めします(必ずしもローカルホストになるとは限りません、ライト?)。出力URLは次のようになります。

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

画像の名前も省略する必要がある場合は、これをセッションに保存する必要があります。

于 2012-09-13T17:52:16.107 に答える
0

試す

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

または

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