无法在 Spring MVC 应用的 jsp 中显示 blob 图像

Can't display blob image in jsp in Spring MVC app

我通过 Hibernate 将图像保存并加载到 MySQL 5.5 数据库,作为 java 中的 byte[] 和数据库中的 blob。然而,当我无法在 jsp.

中显示它时

我的控制器:

@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 中两个元素都不显示任何内容...:[=​​10=]

  <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() returns 唯一的文件名是 byte[] 而不是图像的内容。

所以,要么你以错误的方式保存了图像,只在数据库中保存了图像的文件名而不是图像的内容,要么你使用了错误的模型值(尽管我想知道保存文件有什么意义命名为 byte[] 而不是直接命名为 String).