zoukankan      html  css  js  c++  java
  • 下载的文件有中文名

    原因:服务器获取到文件中文名后,浏览器不知使用那种方式进行解码

    解决办法:

     String agent = request.getHeader("user-agent");
           
     filename = DownLoadUtils.getFileName(agent, filename);
    
     response.setHeader("contentdisposition","attachment;filename="+filename);
    DownLoadUtils.java
    package cn.wei.utils;
    
    import sun.misc.BASE64Encoder;
    import java.io.UnsupportedEncodingException;
    import java.net.URLEncoder;
    
    
    public class DownLoadUtils {
    
        public static String getFileName(String agent, String filename) throws UnsupportedEncodingException {
            if (agent.contains("MSIE")) {
                // IE浏览器
                filename = URLEncoder.encode(filename, "utf-8");
                filename = filename.replace("+", " ");
            } else if (agent.contains("Firefox")) {
                // 火狐浏览器
                BASE64Encoder base64Encoder = new BASE64Encoder();
                filename = "=?utf-8?B?" + base64Encoder.encode(filename.getBytes("utf-8")) + "?=";
            } else {
                // 其它浏览器
                filename = URLEncoder.encode(filename, "utf-8");
            }
            return filename;
        }
    }
     
  • 相关阅读:
    求转置矩阵问题
    喷水装置
    面试之谈
    迭代任意8种数据类型数组
    Session那点事
    随机验证码
    正则表达式:网页爬虫
    模拟上传服务端
    Properties集合的练习
    用递归算法对指定目录的深度遍历
  • 原文地址:https://www.cnblogs.com/findlisa/p/10879151.html
Copyright © 2011-2022 走看看