解决IE浏览器不支持Spring MVC 文件下载的问题
2018-03-10 13:21:56
1226次阅读
0个评论
问题代码(IE浏览器不能正常下载,其他浏览器正常)
/**
* 下载
* @return
* @throws HttpErrorException
*/
@RequestMapping(value="/download", method=RequestMethod.GET)
public ResponseEntity<byte[]> download() throws HttpErrorException {
String zipFile = "C:\\test.zip";
File downloadZip = new File(zipFile);
HttpHeaders headers = new HttpHeaders();
headers.setContentDispositionFormData("attachment", downloadZip.getName());
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
ResponseEntity<byte[]> responseEntity;
try {
responseEntity = new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(downloadZip), headers, HttpStatus.OK);
} catch (IOException e) {
modelMsg = "读取文件错误: " + downloadZip.getPath();
throw new HttpErrorException(modelMsg, HttpStatus.INTERNAL_SERVER_ERROR.value());
}
return responseEntity;
}
经过调试,发现问题出在下面这行上:
headers.setContentDispositionFormData("attachment", downloadZip.getName());
这行代码的作用是用于告诉浏览器如何显示本次请求响应所附加的文件,“attachment”表示是让浏览器以下载附件的形式打开文件。通过调试打印出其设置内容,得到文本如下:
[form-data; name="attachment"; filename="test.zip"]
问题出现在“form-data”字符,此标识应该是在文件上传时才使用(上传文件时一般都将文件放置在表单域中),将问题行代码更换成下述代码,问题便可得到解决:
headers.set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + downloadZip.getName() + "\"");
00
相关话题
- 解决spring mvc 返回json对象时ie浏览器访问会出现下载文件弹出框
- hack来区分不同的IE浏览器
- Spring MVC 文件下载
- 解决安卓浏览器文本无法垂直居中的问题
- IE7/IE8浏览器纯CSS实现圆角效果
- 禁止用户打开浏览器控制台
- 最新禁止用户打开浏览器控制台
- Spring下载地址
- Nginx支持字体文件
- 解决kindeditor中onkeydown不执行的问题
- 解决Spring Boot+AngularJS因为跨域导致Session丢失问题
- Apache的commons-net实现FTP的文件上传下载
- SImpleImage解决图片压缩变红问题
- Mybatis解决oracle in语句 1000个数限制的问题
- Nginx的upstream支持的5种分配方式