无法将blob渲染为grails 2.1中的图像

时间:2013-05-05 00:28:35

标签: image grails controller render

我正在尝试从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或我必须指定的任何其他事情有关。任何想法??

3 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

试试这个:

def displayImage(){
def something = Something.get( params.id )
byte[] image = something.image
response.outputStream << image
}

答案 2 :(得分: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;
}