首页 > 解决方案 > REST - Jersey - Spring - 文件下载

问题描述

我有一个产生 MediaType.APPLICATION_OCTET_STREAM 的 REST API(POST 方法),并且响应标头也使用以下代码设置。

@Path("/file")
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response getFile() throws IOException {

. . .

ResponseBuilder respBuilder = Response.ok((Object) file);
respBuilder.header("Content-Disposition", "attachment; filename=\"" + file.getName() + "\";");
return respBuilder.build();

但是,当我从 Postman 或 My App 调用此 API 时,这不会下载文件,而是在正文中给出响应,其中包含内容和响应代码 200。

不知道这里有什么问题!我应该在 Spring / WEB Server 中做任何额外的配置吗?

标签: springrestfiledownloadjersey

解决方案


您需要返回 InputStream 作为响应正文。尝试这个:

InputStream targetStream = new FileInputStream(file)
ResponseBuilder respBuilder = Response.ok(targetStream);
respBuilder.header("Content-Disposition", "attachment; filename=\"" + file.getName() + "\";");
return respBuilder.build();

推荐阅读