设置 Content-Disposition=attachment
的最合适和标准的方法是什么?和 filename=xyz.zip
使用 Spring 3 FileSystemResource
?
Action 看起来像:
@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
实现这一目标的方法。
附:这里使用的文件是一个临时文件,当JVM存在时标记为删除。
最佳答案
除了接受的答案之外,Spring 还有类 ContentDisposition专门为此目的。我相信它处理文件名清理。
ContentDisposition contentDisposition = ContentDisposition.builder("inline")
.filename("Filename")
.build();
HttpHeaders headers = new HttpHeaders();
headers.setContentDisposition(contentDisposition);
关于java - 使用FileSystemResource强制下载文件时如何设置 'Content-Disposition'和 'Filename'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16601428/