【发布时间】:2016-12-20 15:18:42
【问题描述】:
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Perfect") })
public void getLabel(@QueryParam("orderItemsId") String orderItemsId,HttpServletRequest httpServletRequest,HttpServletResponse response) {
String dataDirectory = httpServletRequest.getSession().getServletContext().getRealPath("/WEB-INF/files/label.pdf");
Path file = Paths.get(dataDirectory);
if (Files.exists(file))
{
response.setContentType("application/pdf");
response.addHeader("Content-Disposition", "attachment; filename=\"label.pdf\"");
try
{
Files.copy(file, response.getOutputStream());
response.getOutputStream().flush();
}
catch (IOException ex) {
ex.printStackTrace();
}
}
}
我正在使用 springfox-swagger2 - 2.5.0 版和 springfox-swagger-ui - 2.5.0 版。
没有 content-Disposition 标头 swagger 无法在 swagger-ui 中同步输出文件,它以二进制形式显示数据(我猜)有点损坏,而有了这个标头,我在 ResponseBody 中获得了一个链接,它也下载 pdf 但是损坏的表单与在 swagger-ui 中同步的相同。
我进行了一项研究,结果表明我们需要提供 datatype:"file" 以响应 link 。但 @ApiResponse 不包含任何数据类型字段。虽然它有响应的领域,但我不知道该给什么课 八位字节流输出。我已经尝试过 OutputStream 但它不起作用。
编辑:Swagger UI 不支持文件下载。而如果通过其他来源调用相同的 url 将完成这项工作。
【问题讨论】:
标签: java io swagger-2.0