【问题标题】:Convert byte[] to image and display on jsp将byte[]转换为图片并在jsp上显示
【发布时间】:2016-04-06 05:46:16
【问题描述】:

我正在尝试在 jsp 页面上显示上传的图片(现在是字节数组)。现在,byte[] 列存在于数据库中,必须转换为图像。

这是我一直在尝试的:

jsp页面部分表格:

<c:forEach var="user" items="${userList}">
    <tr>
        <td>${user.fileName}</td>
        <td>
            <img src="data:image/jpg;base64,${user.imageFile}" alt="No image">
        </td>

从 MultipartFile 对象中获取字节数组的控制器部分:

@RequestMapping(value = "/register", method = RequestMethod.POST)
    public ModelAndView userRegister(@ModelAttribute("user") @Valid User user, BindingResult result, ModelMap model, @RequestParam("fileData") MultipartFile fileData) throws Exception {

            if (!fileData.isEmpty() && fileData != null) {                

                byte[] bytes = fileData.getBytes();
                user.setFileName(fileData.getOriginalFilename());
                user.setImageFile(bytes);
            }
        }

如果需要任何其他信息,请告诉我。谢谢。

【问题讨论】:

  • 我认为您需要将字节数组转换为 base64 字符串。请看stackoverflow.com/a/33552306/2308683
  • @cricket_007 我仍然不知道如何在我的jsp中使用这个Base64字符串。
  • user.imageFile 成为字符串而不是字节数组。

标签: java hibernate jsp spring-mvc image-uploading


【解决方案1】:

您可以将临时的base64imageFile 属性添加到您的User。它将保存图像的 base64 编码字符串,您可以在 jsp 中访问它,例如

<img alt="img" src="data:image/jpeg;base64,${user.base64imageFile}"/>

在你的方法中你应该进行编码,类似于

@RequestMapping(value = "/register", method = RequestMethod.POST)
    public ModelAndView userRegister(@ModelAttribute("user") @Valid User user, BindingResult result, ModelMap model, @RequestParam("fileData") MultipartFile fileData) throws Exception {
        if (!fileData.isEmpty() && fileData != null) {                
            byte[] bytes = fileData.getBytes();
            user.setFileName(fileData.getOriginalFilename());
            user.setImageFile(bytes);
            byte[] encodeBase64 = Base64.encodeBase64(bytes);
            String base64Encoded = new String(encodeBase64, "UTF-8");
            user.setBase64image(base64encoded);
        }
    }

IOUtilsBase64 是来自 org.apache.commons 的一个方便的实用程序类,查找应该没有问题

【讨论】:

  • 谢谢。有效。我使用基本的 java.util.Base64 类方法进行 base64 编码。Base64.getEncoder().encode(bytes)
  • 我还必须补充一点,如果显示的图像大于允许的 URI 大小,浏览器可能无法显示图像。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2012-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-08
  • 2015-03-19
相关资源
最近更新 更多