java - Spring FileSystemResource 在保留原始文件名的同时下载文件
问题描述
我想下载一个文件,同时保留文件的文件名。
我有:
@RequestMapping(value = "/downloadFile", method = RequestMethod.GET, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
@ResponseBody
public FileSystemResource getFile(@RequestParam(value="filename") String filename) {
return new FileSystemResource(uploadDir + "/" + filename);
}
我可以下载文件,但我下载的文件名始终是“downloadFile.pdf”或“downloadFile.png”。
如何保留原始文件名?谢谢。
解决方案
您可以在 Spring 中尝试以下代码。
@GetMapping(value = "/downloadFile", method = RequestMethod.GET, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public ResponseEntity<?> downloadFile(@RequestParam(value="filename") String filename) {
String dirPath = "your-location-path";
byte[] fileBytes = null;
try {
fileBytes = Files.readAllBytes(Paths.get(dirPath + fileName));
} catch (IOException e) {
e.printStackTrace();
}
return ResponseEntity.ok()
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileName + "\"")
.body(fileBytes);
}
推荐阅读
- tensorflow - 卷积网络作为特征提取器
- javascript - 如何更改动态表中的特定图像?
- download - 当我按下下载它应该生成payslip pdf,但显示TCPDF ERROR: Some data has been output, can't send PDF file
- reactjs - 警告:使用 react-bootstrap 导航栏时,在 StrictMode 中不推荐使用 findDOMNode
- r - 从频率表到观测
- android - Kotlin codelab:没有返回值,那为什么返回泛型类型?
- sql - 如何使用 SQL/Access 基于公共分组在表中重新排序序列号(不是 id)?
- python - 在 Python 中使用辛欧拉模拟地球轨道
- php - 如果在 WooCommerce 中自动添加包装,则在选择产品重量时不计算最终成本
- powershell - PowerShell - 在模式之后匹配字符