0

我正在尝试从 gsp 渲染上传的图像但没有成功。我有这个来渲染图像..有什么问题?

//domain-class
class Something {
    ...
    byte[] image
}

//controller
def displayImage(){
    def something = Something.get(id)
    response.contentType = 'image/jpeg'
    response.outputStream << something?.image
    response.outputStream.flush()
}

//gsp
<img src="${createLink(action:'displayImage',  id:something?.id)}" />

我已将控制器修改为这样

displayImage(){
    def something = Something.get(params.id)
    ........
}

我没有得到异常,但也没有显示图像。我不知道这是否与 ContentType 或我必须指定的任何其他事情有关。有任何想法吗??

4

3 回答 3

1

您需要采用以下任一方法:

def displayImage(){
    def something = Something.get(params.id)
    ........
}

或者

def displayImage(Long id){
    .....
}

控制器已params自动绑定而不是id. 如果您在进行此修改后也遇到异常,请将其添加到问题中。

于 2013-05-05T01:25:54.793 回答
0

尝试这个 :

def displayImage(){
def something = Something.get( params.id )
byte[] image = something.image
response.outputStream << image
}
于 2013-05-06T11:39:00.353 回答
0
def displayImage(){
    Photo photo = Photo.get(1)
    response.setHeader("Content-disposition", "attachment; filename=${photo?.name}")
    response.contentType = photo?.type
    response.outputStream << new File(photo?.path).getBytes()
    response.outputStream.flush()
    return;
}
于 2013-05-06T17:38:37.850 回答