Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 373|回复: 0

[默认分类] Java 解决IE浏览器下载文件,文件名出现乱码问题

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2020-8-5 16:07:03 | 显示全部楼层 |阅读模式

    1. /**
    2.      * 区分ie 和其他浏览器的下载文件乱码问题
    3.      * @param request
    4.      * @param fileName
    5.      * @return
    6.      */
    7.     public String getFileName(HttpServletRequest req,String fileName){
    8.         String userAgent = req.getHeader("user-agent");
    9.         userAgent = userAgent ==null?"":userAgent.toLowerCase();
    10.         String name = fileName;
    11.         try {
    12.         //针对IE或者以IE为内核的[url=https://www.2cto.com/os/liulanqi/]浏览器[/url]:
    13.             if(userAgent.contains("msie") ||userAgent.contains("trident")){
    14.                 name = URLEncoder.encode(name, "UTF-8");
    15.             }else{
    16.                 name = new String(name.getBytes(), "iso-8859-1");
    17.             }
    18.         } catch (Exception e) {
    19.             throw new SysException(ERRORConstants.COMMON_SYSTEM_ERROR, e);
    20.         }
    21.         return name;
    22.     }
    复制代码


      网上很多例子是用 msie  和like Gecko  来做区分,说ie11去除了msie;
    亲自测试 谷歌浏览器也带like Gecko,ie11的 msie没有移除,并且带有trident标记
    结论是 不用用like Gecko来做区分,最后

    1. public void exportExcel(HttpServletRequest req,HttpServletResponse response) {
    2.         try{
    3.               response.setContentType("application/octet-stream");
    4.               String excelName = "文件名";
    5.               response.addHeader("Content-Disposition", "attachment;filename="+getFileName(req,excelName)+".xls");
    6.               OutputStream out = response.getOutputStream();
    7.               testService.export(out);
    8.           }catch(Exception e){
    9. //
    10.           }      
    11.     }
    复制代码


    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-1 04:00 , Processed in 0.429036 second(s), 37 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表