spring - 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 中做任何额外的配置吗?
解决方案
您需要返回 InputStream 作为响应正文。尝试这个:
InputStream targetStream = new FileInputStream(file)
ResponseBuilder respBuilder = Response.ok(targetStream);
respBuilder.header("Content-Disposition", "attachment; filename=\"" + file.getName() + "\";");
return respBuilder.build();
推荐阅读
- r - 尝试制作带有突出显示线的镶板意大利面图表
- django - Django REST Framework:仅显示最新的嵌套对象,以未嵌套的 JSON 形式返回
- html - 蛇线中的网格自动流动?
- java - 出现错误:> Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/bin/java'' 以非零退出值 1 结束
- javascript - 切换字体真棒图标
- vba - 如何引用Word文档中的所有表格?
- excel - 应使用令牌逗号 - 无法运行 JSON 查询
- pyspark - Pyspark sql在日期类型值中添加字母
- r - 使用 24 小时制数据创建圆形图的方法是什么?
- vue.js - 如何使用 testcafe 在电子应用程序上测试外部浏览器页面