使用Spring 3的FileSystemResource
,设置Content-Disposition=attachment
和filename=xyz.zip
的最合适和标准的方法是什么?
操作看起来像:
@ResponseBody
@RequestMapping(value = "/action/{abcd}/{efgh}", method = RequestMethod.GET, produces = "application/zip")
@PreAuthorize("@authorizationService.authorizeMethod()")
public FileSystemResource doAction(@PathVariable String abcd, @PathVariable String efgh) {
File zipFile = service.getFile(abcd, efgh);
return new FileSystemResource(zipFile);
}
尽管该文件是zip文件,因此浏览器总是下载该文件,但我想明确地将文件作为附件提及,并提供一个与文件实际名称无关的文件名。
可能有解决这个问题的方法,但我想知道正确的Spring和FileSystemResource
方法来实现这个目标。
P.S. 这里使用的文件是临时文件,标记在JVM存在时删除。
HttpServletResponse
或ResponseEntity
构建器来构建一个响应,你仍然可以使用ContentDisposition
类来为你生成头部字符串:response.setHeader(HttpHeaders.CONTENT_DISPOSITION, contentDisposition.toString());
它会处理必要的转义字符。 - neXusContentDisposition.inline()
或ContentDisposition.attachment()
代替ContentDisposition.builder("inline")
。 - Milosz Tylenda