【问题标题】:Display byte array in gsp在 gsp 中显示字节数组
【发布时间】:2012-12-09 17:12:50
【问题描述】:

我想遍历这个类并显示在一个表格中。显示图像的最简单方法是什么?

class Crop {
    static hasMany = [diseases: Disease]
    int id
    String commonName
    String scientificName
    byte[] image
}

static mapping = {
    table: 'Crops'
    commonName length : 100
    scientificName length: 100
    image sqlType: "longblob"
}

【问题讨论】:

  • 通常你会为每个由控制器处理的图像做一个额外的请求。您真的必须在 gsp 中执行此操作吗?也许您应该先接受您之前提出的一些问题?

标签: grails grails-orm


【解决方案1】:

如果您不介意缺乏浏览器兼容性,您可以使用data: uri 编码:

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

请参阅Data URI encoding scheme 上的维基百科页面

@Xeon 建议采用更传统的方法,即创建一个控制器,该控制器返回具有正确 mime 类型和字节数组作为主体的图像响应。

【讨论】:

    【解决方案2】:

    你可以做和this answer一样的事情。

    或者您可以创建从您的实体提供图像数据流的控制器。在普惠制上你可以写:

    <img src="${request.contextPath}/imageController/actionName?id=${entity.id}" ...
    

    但这是不寻常的 - 将图像存储在实体中为 byte[]。您应该考虑将其更改为 String,这将指示图像的路径/文件名。

    【讨论】:

    • 我不会说在数据库中存储图像是不寻常的,我已经看到它在很多场合使用过,老实说,它通常是很多应用程序的首选。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    相关资源
    最近更新 更多