[英]gsp, image from array byte
我有一个JDO类和一个辅助类Image,用于将图像存储在字节数组中
JDO类:
@PersistenceCapable
class Recipe{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long key
@Persistent
private String description
@Persistent(serialized = "true")
private Image image;
}
图片类别:
class Image implements Serializable {
private byte[] content
private String filename
private String mimeType
}
在gsp页面中,我遍历所有食谱并希望显示图像。 我可以做一个像这样的控制器来获取图像src。
def viewImage= {
//retrieve photo code here
response.setHeader("Content-disposition", "attachment; filename=${photo.name}")
response.contentType = photo.fileType //'image/jpeg' will do too
response.outputStream << photo.file //'myphoto.jpg' will do too
response.outputStream.flush()
return;
}
但是通过这种方式,我必须将配方的密钥发送到此控制器,然后再次从数据存储区加载图像。 (我已经实际上已经加载了它。但是我想我无法将这些数据发送到控制器。可以吗?)没有更方便的方法来显示gsp页面中字节数组中的图像吗?
我在这里有一个类似的用例,一个File域类持有一个byte []和上载文件的元信息。 要下载文件,我正在使用:
def fileDownload = {
long id = params.id as long
def file = File.get(id)
assert file
def fileName = URLEncoder.encode(file.name)
response.addHeader("content-disposition", "attachment;filename=$fileName")
response.contentType = file.contentType
response.contentLength = file.data.size()
response.outputStream << file.data
}
关于一遍又一遍地重新加载文件,我不太在乎,Hibernate 2级缓存对此很在乎。 如果仍然有理由不在下载请求中加载文件,则可以在上一个调用中将其存储到http会话中。 将其存储在http会话中的缺点:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.