使用spring mvc做文件下载时ie浏览器文件名乱码和下载不了问题解决
来源:互联网 发布:香酸枣淘宝 编辑:程序博客网 时间:2024/04/28 01:28
使用spring mvc做文件下载时遇到了一个问题,就是下载的文件的文件名会出现乱码的情况,代码如下
@RequestMapping("/downloadFileT") public ResponseEntity<byte[]> downloadFileT(Upload upload) throws IOException { if (upload != null && upload.getNewName() != null) { File file = new File(upload.getPath(), upload.getNewName()); if (file.exists()) { String fileName = ""; if(request.getHeader("USER-AGENT").toLowerCase().contains("msie")){ fileName = URLEncoder.encode(upload.getName() , "UTF-8"); }else{ fileName = new String(upload.getName().getBytes("utf-8"),"iso-8859-1"); } HttpHeaders headers = new HttpHeaders(); headers.setContentDispositionFormData("attachment;filename="+ fileName +";", fileName); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED); } } return null; }
但是这样在ie浏览器下还是会出现文件名乱码和文件下载不了,后来发现ie浏览器是不支持201状态码的,则改成200,但是还是发现有问题,原因是ie11或者win10中用户代理字符串已经修改了,不再是“msie”了,添加了like Gecko,所以加上like gecko判断
修改代码如下,则成功运行
@RequestMapping("/downloadFileT") public ResponseEntity<byte[]> downloadFileT(Upload upload) throws IOException { if (upload != null && upload.getNewName() != null) { File file = new File(upload.getPath(), upload.getNewName()); if (file.exists()) { String fileName = ""; String useragent = request.getHeader("USER-AGENT").toLowerCase(); if(useragent.contains("msie")||useragent.contains("like gecko")||useragent.contains("trident")){ //ie11或者win10中用户代理字符串已经修改了,不再是“msie”了,添加了like Gecko,所以加上like gecko判断 fileName = URLEncoder.encode(upload.getName() , "UTF-8"); }else{ fileName = new String(upload.getName().getBytes("utf-8"),"iso-8859-1"); } HttpHeaders headers = new HttpHeaders(); headers.setContentDispositionFormData("attachment;filename="+ fileName +";", fileName); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.OK); //ie浏览器不支持201的状态码,所以改成200 HttpStatus.OK } } return null; }
阅读全文
0 0
- 使用spring mvc做文件下载时ie浏览器文件名乱码和下载不了问题解决
- spring mvc 下载文件 IE浏览器文件名是乱码
- spring mvc 下载文件 IE浏览器文件名是乱码
- IE浏览器下载文件中文文件名乱码问题解决
- Spring MVC 文件下载IE浏览器不支持的问题解决
- Java下载文件时IE浏览器出现文件名乱码
- Java后台下载文件时IE浏览器出现文件名乱码
- Response下载文件时,火狐浏览器文件名乱码问题解决方法
- IE浏览器下载文件名乱码
- IE文件下载时中文文件名乱码
- 解决ie和其他浏览器poi下载excel文件名乱码
- 解决ie和其他浏览器poi下载excel文件名乱码
- [浏览器]IE下载中文文件名乱码问题
- Spring MVC文件下载及中文文件名乱码解决
- php文件下载IE文件名乱码问题
- 下载文件,ie文件名乱码问题
- 文件下载,IE下文件名乱码【解决方案】
- java文件下载文件名乱码问题解决方案
- 紫金港基地天眼系统信号触发调试记录
- 使用lucene4.6进行排序时报错:java.lang.IllegalArgumentException: after must be a FieldDoc; got doc=411 score=1
- 基于Python的微信开发(2):定时天气预报
- linux io模型讲解
- java项目部署到tomcat修改项目名称
- 使用spring mvc做文件下载时ie浏览器文件名乱码和下载不了问题解决
- Netty3.0+ 心跳机制(三)
- 给初学者的RxJava2.0教程(五)
- JSP中的EL表达式详细介绍
- 计算机基础知识
- FastJson过滤字段
- C#中的多线程
- Java后台之路(08)-Servlet
- 042-Java-033