【发布时间】:2020-11-23 10:20:29
【问题描述】:
我需要在spring boot中使用byte []来进行图像转换,根据以下代码我可以得到图像,但是它无法显示。所以我需要在调用 API 时显示图像的解决方案, http://localhost:9000/files/d317447b-7235-47c5-9923-bc65aae89d76
@GetMapping("/files/{id}")
public ResponseEntity<byte[]> getFile(@PathVariable String id) {
FileDB fileDB = storageService.getFile(id);
log.info("{}->{}","FILES_GET_BY_ID:",id);
return ResponseEntity.ok()
.header(HttpHeaders.ACCEPT, "attachment; filename=\"" + fileDB.getName() + "\"")
.body(fileDB.getData());
}
我终于找到了解决办法。
@GetMapping("/files/{id}")
public ResponseEntity<byte[]> getFile(@PathVariable String id) {
FileDB fileDB = storageService.getFile(id);
log.info("{}->{}","FILES_GET_BY_ID:",id);
return ResponseEntity.ok()
.contentType(MediaType.IMAGE_JPEG)
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileDB.getName() + "\"")
.body(fileDB.getData());
}
【问题讨论】:
-
如果您想使用
<img标签显示图像,只需流式传输byte[]。您目前正在为文件下载做准备。 -
我想用 url 代替 byte[]
-
不,你没有。 URL 只是流式传输字节 [] 并确保正确设置内容类型的对象。
标签: java spring-boot stream