【发布时间】:2017-05-09 03:01:21
【问题描述】:
我的后端保存了 .xlsx、.docx 和 .pdf 文件。下载控制器如下所示:
@RestController
public class FileDownload {
@RequestMapping(value = "/files/{file_name}/", method = RequestMethod.GET, produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public void getFile(
@PathVariable("file_name") String file,
HttpServletResponse response) throws Exception {
String fileType=file.split("\\.")[1];
switch(fileType){
case "xlsx": response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
break;
case "docx": response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");
break;
case "pdf": response.setContentType("application/pdf");
break;
default: response.setContentType("application/octet-stream");
break;
}
response.setHeader("Content-Disposition", "attachment; filename=" + file);
response.setHeader("Content-Length", String.valueOf(file.length()));
InputStream is = FileDownload.class.getResourceAsStream("/files/" + file);
copy(is, response.getOutputStream());
response.flushBuffer();
}
}
当试图打开文件时,excel 告诉我它已损坏,需要修复。但是修复过程也失败了。
什么可能导致此错误?
有很多类似的问题,但建议的解决方案似乎都不起作用。
唯一有效的“修复”是将“下载”属性附加到前端下载文件的链接。但遗憾的是,这不适用于 IE。
【问题讨论】: