我正在尝试动态显示我作为Blob存储在Google数据存储区中的图像。我没有收到任何错误,但我在我查看的页面上看到了破碎的图像。
任何帮助都会很棒!
我的grails应用程序中有以下代码
域类具有以下内容
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
Long id
@Persistent
String siteName
@Persistent
String url
@Persistent
Blob img
@Persistent
String yourName
@Persistent
String yourURL
@Persistent
Date date
static constraints = {
id( visible:false)
}
我在控制器中的保存方法有这个
def save = {
params.img = new Blob(params.imgfile.getBytes())
def siteInfoInstance = new SiteInfo(params)
if(!siteInfoInstance.hasErrors() ) {
try{
persistenceManager.makePersistent(siteInfoInstance)
} finally{
flash.message = "SiteInfo ${siteInfoInstance.id} created"
redirect(action:show,id:siteInfoInstance.id)
}
}
render(view:'create',model:[siteInfoInstance:siteInfoInstance])
}
我的观点有以下
<img src="${createLink(controller:'siteInfoController', action:'showImage', id:fieldValue(bean:siteInfoInstance, field:'id'))}"></img>
我控制器中调用它来显示图像链接的方法如下所示
def showImage = {
def site = SiteInfo.get(params.id)// get the record
response.outputStream << site.img // write the image to the outputstream
response.outputStream.flush()
}
答案 0 :(得分:0)
你从绑定中找回正确的字节[]吗? IIRC,grails在应用引擎上的字节数组和文件存在一些问题,因为它使用的是基于文件的多部分解析器,而不是JRE黑名单。
还尝试在回复中返回内容类型:
response.contentType =“image / png”;