将byte []转换为图像并在jsp上显示

我正在尝试在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);

}

}

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

回答:

您可以将tranisent 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);

}

}

IOUtils并且Base64是来自的方便的util类org.apache.commons,查找应该没有问题

以上是 将byte []转换为图像并在jsp上显示 的全部内容, 来源链接: utcz.com/qa/423455.html

回到顶部