Html 如何通过指向RESTAPI的href标记显示图像?
我正在构建一些web应用程序。在我的前端,我需要显示先前上传到spring boot hsqldb的图像。图像数据以BLOB类型存储在数据库中。我想将它们显示为:Html 如何通过指向RESTAPI的href标记显示图像?,html,spring-boot,Html,Spring Boot,我正在构建一些web应用程序。在我的前端,我需要显示先前上传到spring boot hsqldb的图像。图像数据以BLOB类型存储在数据库中。我想将它们显示为: <img href="/api/photos/0"> 这是我的spring boot api控制器: @GetMapping(value = "/photos/{id}") public String readPhoto(@PathVariable Long id){ return mak
<img href="/api/photos/0">
这是我的spring boot api控制器:
@GetMapping(value = "/photos/{id}")
public String readPhoto(@PathVariable Long id){
return makePhotoUrl(photosRepository.findById(id).get().getData());
}
private String makePhotoUrl(byte[] photo){
String photoUrl = "data:image/jpeg;base64," +
Base64.getEncoder().encodeToString(photo);
return photoUrl;
}
我确实通过浏览器直接访问url来获取图像数据,但我的卡仍然是空的
请帮助我,因为我不知道如何使它工作。所以,经过一天的研究,我终于找到了答案。基本上我犯了两个错误。 首先,href指定链接目的地,但只能与“a”标记一起使用:
如果我想指定img源,我应该使用“src”:
其次,若我想从api直接返回url,那个么它必须指向一个物理文件。我可能错了,请纠正我。
我已将控制器更改为:
public ResponseEntity readPhotoById(长id){
Photo Photo=photosRepository.findById(id.get();
返回ResponseEntity.ok()
.contentType(MediaType.parseMediaType(photo.getType()))
.header(HttpHeaders.CONTENT\u处置,“附件;文件名=\”“+photo.getName()+”\“”)
.body(新的ByteArrayResource(photo.getData());
}
现在,它的工作如预期
干杯:)
@GetMapping(value = "/photos/{id}")
public String readPhoto(@PathVariable Long id){
return makePhotoUrl(photosRepository.findById(id).get().getData());
}
private String makePhotoUrl(byte[] photo){
String photoUrl = "data:image/jpeg;base64," +
Base64.getEncoder().encodeToString(photo);
return photoUrl;
}