SpringMVC下载不支持IE 和其他浏览器兼容模式,和IE 中文乱码问题

/** 
    *  
    * @Title: processFileName 
    *  
    * @Description: ie,chrom,firfox下处理文件名显示乱码 
    */  
   public static String processFileName(HttpServletRequest request, String fileNames) {  
       String codedfilename = null;  
       try {  
           String agent = request.getHeader("USER-AGENT");  
           if (null != agent && -1 != agent.indexOf("MSIE") || null != agent  
                   && -1 != agent.indexOf("Trident")) {// ie  
  
               String name = java.net.URLEncoder.encode(fileNames, "UTF8");  
  
               codedfilename = name;  
           } else if (null != agent && -1 != agent.indexOf("Mozilla")) {// 火狐,chrome等  
  
  
               codedfilename = new String(fileNames.getBytes("UTF-8"), "iso-8859-1");  
           }  
       } catch (Exception e) {  
           e.printStackTrace();  
       }  
       return codedfilename;  
   }  


原文地址:http://blog.csdn.net/heyanfeng22/article/details/49453405




@RequestMapping(value="downLoadTest.do")
public ResponseEntity<byte[]> download(String id,String userid,HttpServletRequest request) throws IOException {
SystemUser user = (SystemUser) request.getSession().getAttribute("user");
boolean mark = false;
System.out.println("下载开始:" + new Date().getTime());
//生成uuid 以免生成的文件与客户端重复
String uuid = UUID.randomUUID().toString();
List list = service.downloadfile(id, user.getUsername());// 下载矩阵文件
mark = new MatrixController().createTxt(list,uuid);
System.out.println("下载结束:" + new Date().getTime());
if(mark){
String fileName = userid+uuid+".txt";
//从服务器中的指定地址拿文件,然后判断文件是否存在
File file = new File("d:/" + fileName);
String dfileName = new String(fileName.getBytes("UTF-8"), "iso8859-1");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//headers.setContentDispositionFormData("attachment", dfileName);
headers.set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + fileName + "\"");

return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.OK);
}else{ //生成矩阵文件失败,生成空文件给出提示
String fileName = "矩阵信息不存在.txt";
String codedfilename = processFileName(request,fileName);
//从服务器中的指定地址拿文件,然后判断文件是否存在
File file = new File("d:/" + fileName);
if(!file.exists()){
file.createNewFile();
}
String dfileName = new String(fileName.getBytes("UTF-8"), "iso8859-1");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", codedfilename);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers, HttpStatus.OK);
}

}
将HttpStatus.CREATED 更改为 HttpStatus.OK
更详细的相似问题及解决方案查看 http://blog.csdn.net/xht555/article/details/48495967
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值