Grails - 从控制器加载图像

时间:2011-10-24 11:44:40

标签: image grails loading

我正在尝试从FTP检索zip文件,解压缩它,并从中获取xml文件和图像文件并解析xml,显示xml和image的内容。

byte[] image = ftpClientService.getThumbnailInZip(customer.ftpUser, 
    customer.ftpPassword, customer.ftpHost, customer.ftpToWrapDirectory, 
    fileName) 
FileOutputStream fos1 = new FileOutputStream("zip.img") 
try { 
    fos1.write(image); 
} finally { 
    fos1.close(); 
} 
return [
    command: this, 
    fileName: fileName, 
    applicationName: applicationName, 
    contentProvider: contentProvider, 
    operatingSystem: operatingSystem, 
    handSets: handSets, 
    zipImg:"zip.img" ]

我可以成功完成xml部分和图像也能够以字节格式从zip中检索(我可以使用文件输出流将其转换为文件),

现在我被困在将图像发送到gsp并显示它。任何投入都非常感激。

由于

3 个答案:

答案 0 :(得分:2)

如果您只想使用图像一次,这意味着它应该始终从zip文件中提取,然后将img以base64格式嵌入到网页中是一个很好的选择,因为您不需要担心图像将该base64编码值发送到gsp后的文件。

如果您仍然需要该图像文件供其他http请求使用,那么您应该将图像提取到文件夹并将img路径列表发送到gsp。

答案 1 :(得分:0)

你可以

  • img src="${g.createLink(action: 'a', params: [p: p])}"指向要在服务器端缓存图片的其他操作(createLink),
  • 或将其嵌入HTML,例如in this question

答案 2 :(得分:0)

如果指定格式,浏览器可以呈现字节数组。

将模型中的变量image发送到byte[]类型的gsp,这是将其呈现为HTML的方式:

<img src="data:image/png;base64,${image.encodeBase64()}"/>

您还需要指定它是image/png还是其他格式。