java - 将byte[]转为图片并在jsp上显示

标签 java hibernate jsp spring-mvc image-uploading

我试图在 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 对象获取字节数组的 Controller 部分:

@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);
            }
        }

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

最佳答案

您可以将 transient 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 的一个方便的 util 类,应该没有问题可以找到

关于java - 将byte[]转为图片并在jsp上显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34560229/

相关文章:

java - 持久性 jar 的问题

java - 当我尝试使用 hibernate 将字段插入表时出错

java - 如何从 doPost() 获取和使用 jsp 文件中的 java 对象?

Java:如何序列化生成的 Java 对象的第 3 方库?

java - 迭代嵌套(多维) HashMap

java - 抽象类实现 Cloneable;抽象对象克隆()

java - Jpa与具有额外列的同一实体的多对多关系

javax.persistence.PersistenceException : Unable to locate persistence units

java - 如何访问自定义标签中foreach标签中的var变量?

java - 如何使用 int 索引访问 TreeMap 中的项目?