我试图在Thymeleaf模板中显示来自MySql数据库的图像。
大多数都能正常工作,但是控制器代码有问题:
@GetMapping(value = "/image/{someId}", produces = {MediaType.IMAGE_JPEG_VALUE, MediaType.IMAGE_PNG_VALUE})
public ResponseEntity<byte[]> getPicture(@PathVariable("someId") long someId) throws IOException {
byte[] imageContent = //Getting the blob element from the Repo through a service
final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.IMAGE_JPEG);
headers.set("Content-Disposition", "attachment; filename=fileName.jpg");
headers.setContentLength(imageContent.length);
return new ResponseEntity<byte[]>(imageContent, headers, HttpStatus.OK);
}
我的代码类似于此处建议的解决方案(请参见this answer或this one),但是我的模板不会显示该图像,因为其内容很可能无效。如果我直接从浏览器到达端点,将下载“ filename.jpg”图像(遵循上面的代码很有意义),但是如果我使用文本编辑器打开图像,则该图像仅包含图像的原始名称。这不是图像。
ResponseEntity的配置中肯定缺少某些内容。您可能有一些我可以阅读的有关该过程的文档,因为我不完全了解发生了什么。