Grails - 从控制器加载图像

发布于 2024-12-11 11:00:29 字数 712 浏览 0 评论 0原文

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

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 并显示它。任何意见都非常感谢。

谢谢

I am trying to retrieve zip file from FTP, unzip it, and get xml file and image file from them and parse the xml, display the contents of xml and 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" ]

I could finish the xml part successfully and image also I am able to retrieve from the zip in a byte format( i could convert it to a file using file outputstream),

Now I am stuck in sending the image to gsp and to display that. Any inputs are much appreciated.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

长不大的小祸害 2024-12-18 11:00:29

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

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

If you want to use the image only once, meaning it should always be extract from the zip file, then embedding the img in base64 format into the webpage is a good option here because you don't need to worry about the image file after sending that base64 encoding value to gsp.

If you still need that image file to be used by other http requests then you should extract the images to a folder and send the list of img paths to gsp.

笨笨の傻瓜 2024-12-18 11:00:29

您可以

  • img src="${g.createLink(action: 'a', params: [p: p])}" 指向其他某个操作(使用 createLink) 会将图像缓存在服务器端,
  • 或将其直接嵌入到 HTML 中,例如 <一个href="https://stackoverflow.com/questions/4502278/grails-displaying-created-image-in-gsp/4502403#4502403">在此问题中。

You can either

  • point img src="${g.createLink(action: 'a', params: [p: p])}" to some other action (with createLink) that will cache the image on your server side,
  • or embed it right into HTML, like in this question.
我做我的改变 2024-12-18 11:00:29

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

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

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

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

Browsers can render byte arrays if you specify the format.

Having a variable image in the model sent to the gsp of type byte[], this is the way to render it HTML:

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

You also need to specify if it's image/png or other format.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文