You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何返回InputStreamResource以使其可在Postman中读取并下载?

修复Spring Boot文件下载接口Postman异常问题

以下是针对你的接口的具体调整方案,可解决Postman中无法正常读取和下载的问题:

1. 替换setContentDispositionFormData为标准附件头

setContentDispositionFormData适用于表单数据场景,文件下载需使用标准的附件处置格式,同时指定UTF-8编码避免文件名乱码:

headers.setContentDisposition(ContentDisposition.attachment()
        .filename(fileId + ".doc", StandardCharsets.UTF_8)
        .build());

2. 移除冗余的Content-Transfer-Encoding头

该头在HTTP/1.1规范中已不推荐使用,Postman等客户端对其处理存在兼容性问题,直接删除此行代码:

// headers.add("Content-Transfer-Encoding", "binary");

3. 简化ContentType设置

无需额外指定字符集,直接使用APPLICATION_OCTET_STREAM即可:

headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);

4. 调整后的完整接口代码

@GetMapping(
        value = "/download/{fileId}",
        produces = MediaType.APPLICATION_OCTET_STREAM_VALUE
)
public ResponseEntity<InputStreamResource> download(@Valid @PathVariable(value = "fileId") String fileId) {
    InputStream inputStream = service.download(fileId);
    InputStreamResource file = new InputStreamResource(inputStream);

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
    headers.setContentDisposition(ContentDisposition.attachment()
            .filename(fileId + ".doc", StandardCharsets.UTF_8)
            .build());

    return ResponseEntity.ok()
            .headers(headers)
            .body(file);
}

5. Postman调用验证

  • 调用接口后,Postman会自动识别附件响应,点击界面中的「Save Response」按钮即可下载文件;
  • 若仍显示乱码,切换到「Response」标签页的「Raw」模式,将编码选择为UTF-8。

内容的提问来源于stack exchange,提问作者Lalisa Daniella

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 11:52:46