java - 无法在 Spring MVC 应用程序中的 jsp 中显示 blob 图像

标签 java spring hibernate jsp spring-mvc

我通过 Hibernate 将图像保存并加载到 MySQL 5.5 数据库,作为 java 和 blob 中的 byte[]在数据库中。尽管如此,当我无法在 jsp 中显示它时。

我的 Controller :

@RequestMapping(value = "/productPicture/{productPictureId}/edit", method = RequestMethod.GET)
public String productPictureEditGET(@PathVariable("productPictureId") int productPictureId, HttpServletRequest request, Model model) {

    ProductPictureFormBO productPicture = productPictureService.getById(productPictureId, ProductPictureFormBO.class, ProductPictureEntity.class);

    byte[] encoded=org.apache.commons.codec.binary.Base64
            .encodeBase64(productPicture.getPicture());
    String encodedString = new String(encoded);

    model.addAttribute("image",encodedString);
    model.addAttribute("productPicture", productPicture);

    return "productPicture/editView";
}

然后在 jsp 中两个元素都不显示任何内容...:

  <img src="data:image/jpeg;base64,${image}" alt="..." width="200" height="200">`
  <img src="data:image/jpeg;base64,${productPicture.picture}" width="200" height="200">`

jsp结果:

<img src="data:image/jpeg;base64,MTA4ODg4MTdfMTAyMDM1NjkyNTEzMzQ1MThfNzg0MzE4ODI3Mjc5Mjk0NTQ3MF9uLmpwZw=="  width="200" height="200">
<img src="data:image/jpeg;base64,[B@1666a2e3" width="200" height="200">

知道我缺少什么以及如何解决它吗?

最佳答案

数据 URI 方案必须代表图像的内容,而不是代表文件名的字符串。

这里,

<img src="data:image/jpeg;base64,MTA4ODg4MTdfMTAyMDM1NjkyNTEzMzQ1MThfNzg0MzE4ODI3Mjc5Mjk0NTQ3MF9uLmpwZw=="  width="200" height="200">

这是10888817_10203569251334518_7843188272792945470_n.jpg的base64编码值,它根本不代表图像内容,但清楚地代表图像的文件名。显然,ProductPicture#getPicture() 返回的唯一文件名是 byte[],而不是图像的内容。

因此,要么您以错误的方式保存了图像,仅将图像的文件名而不是图像的内容保存在数据库中,要么使用了错误的模型值(尽管我想知道将文件名保存为byte[] 而不是直接作为 String)。

关于java - 无法在 Spring MVC 应用程序中的 jsp 中显示 blob 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27804854/

相关文章:

java - 哪些内存相关的Tomcat JVM启动参数值得调优?

java - 从 CSR 文件获取 SSL 证书

java - 按钮中的按钮 (android.content.Context) 无法应用于 (Java.lang.Object)

java - 通过属性选择不同的嵌入对象

java - 使用显示错误的 hibernate 更新 mysql 表

java - 如何创建基于注释的 Hibernate 映射?

java - 使用 Principal REST hibernate @OneToOne 映射

java - 检查子列表是否在列表中

spring - JUnit : my XML file location in @ContextConfiguration isn't found

spring - Autowiring 的局限性