【问题标题】:byte[] to image conversion spring bootbyte[] 到图像转换 spring boot
【发布时间】: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());
    }

【问题讨论】:

  • 如果您想使用&lt;img 标签显示图像,只需流式传输byte[]。您目前正在为文件下载做准备。
  • 我想用 url 代替 byte[]
  • 不,你没有。 URL 只是流式传输字节 [] 并确保正确设置内容类型的对象。

标签: java spring-boot stream


【解决方案1】:

我认为您需要更改 HTTP 标头 而不是使用 ACCEPT 使用标题 Content-Disposition 还将响应类型设置为相关类型。

【讨论】:

  • 在我尝试之前,文件可以下载;但是,我需要显示图像
  • 删除附件并在内容沉积附件中设置文件名将强制浏览器下载
猜你喜欢
  • 1970-01-01
  • 2018-01-21
  • 2015-05-23
  • 2011-11-04
  • 1970-01-01
  • 2017-05-04
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
相关资源
最近更新 更多