有没有办法在 thymeleaf 和 spring boot 中显示来自 MySql 数据库的图像?
Posted
技术标签:
【中文标题】有没有办法在 thymeleaf 和 spring boot 中显示来自 MySql 数据库的图像?【英文标题】:Is there a way to display an image from MySql database in thymeleaf and spring boot? 【发布时间】:2019-09-05 06:47:17 【问题描述】:我创建了一个名为:department 的 mysql 数据库。我可以显示数据库中的所有其他列,除了 BLOB 格式的“徽标”。我可以将图像保存到“徽标”中,但无法在百里香表中显示。我需要一个单独的控制器来显示图像吗?
这是我的 Thymeleaf 显示图像:
<td>
<img th:src="$tempDepartment.logo" >
</td>
这是我的实体:
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
@Column(name="dept_name")
private String deptName;
@Lob
@Column(name="logo")
private byte[] logo;
这是我的控制器:
//lists all departments
@GetMapping("/departments")
public String listDepartments(Model model)
List<Department> departments = departmentService.findAll();
model.addAttribute("departments",departments);
return "/departments/list"; // Your current thymeleaf template
//adding a new department
@GetMapping("/showFormForAdd")
public String showFormForAdd(Model theModel)
Department theDepartment=new Department();
theModel.addAttribute("department",theDepartment);
return "/departments/department-form";
//saving a department
@PostMapping("/save")
public String saveDepartment(@ModelAttribute("department")
Department theDepartment)
departmentService.save(theDepartment);
return "redirect:/home/departments";
我希望显示数据库中的图像,但没有显示。
【问题讨论】:
请添加你的控制器方法的代码然后只能解决它......你的@RequestMapping
中设置的参数是什么@..
你好维克兰特,我没有写任何控制器来处理@RequestMapping。但是,我将在下面分享我的一些控制器代码。
【参考方案1】:
将您的byte[]
更改为Base64
图像并在html
文件中您需要尝试此操作..
< img th:src="*'data:image/png;base64,'+image" />
而不是
<img th:src="$tempDepartment.logo" >
如果你的控制器有这个参数produces = MediaType.IMAGE_PNG_VALUE
,你的thymeleaf代码就可以工作了
更多详情请通过this link
【讨论】:
首先,感谢您的帮助。但不幸的是,您提供的链接没有提供解决方案。只是另一个未回答的问题。 @Sam 你真的看到那个链接吗,因为我可以在那个链接中看到一个经过验证的答案实际上是存在的......所以,请先通过它并尝试判断......谢谢【参考方案2】:我是这样解决的:
使用将字节数组转换为字符串的方法创建了一个类 这里类有实例方法,你也可以使用静态方法,提供类的完整路径
public class ImageUtil
public String getImgData(byte[] byteData)
return Base64.getMimeEncoder().encodeToString(byteData);
在控制器中,创建 ImageUtil 实例,并添加到模型中
model.addAttribute("imgUtil", new ImageUtil());
在 thymeleaf HTML 文件中,使用以下代码
<img class='img-thumbnail' th:src="'data:image/jpeg;base64,' + $imgUtil.getImgData(entity.imgData)" />
这里,entity
是 JPA 实体或 POJO 的一个实例
我投入了大量的时间和精力,终于解决了。 :)
如果你卡在某个地方,请告诉我
【讨论】:
以上是关于有没有办法在 thymeleaf 和 spring boot 中显示来自 MySql 数据库的图像?的主要内容,如果未能解决你的问题,请参考以下文章
Spring MVC:如何在 Thymeleaf 中获取当前 url
springboot使用thymeleaf时报html没有结束标签