码迷,mamicode.com
首页 > 编程语言 > 详细

文件名称是中文的下载(java)

时间:2018-01-20 15:08:36      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:浏览器   head   res   while   context   直接   this   ext   输入   

        //*******文件名称是中文的下载*******

        //获得要下载的文件的名称
        String filename = request.getParameter("filename");//????.jpg
        //解决获得中文参数的乱码----下节课讲
        filename = new String(filename.getBytes("ISO8859-1"),"UTF-8");//美女.jpg
    
        //获得请求头中的User-Agent
        String agent = request.getHeader("User-Agent");
        //根据不同浏览器进行不同的编码
        String filenameEncoder = "";
        if (agent.contains("MSIE")) {
            // IE浏览器
            filenameEncoder = URLEncoder.encode(filename, "utf-8");
            filenameEncoder = filenameEncoder.replace("+", " ");
        } else if (agent.contains("Firefox")) {
            // 火狐浏览器
            BASE64Encoder base64Encoder = new BASE64Encoder();
            filenameEncoder = "=?utf-8?B?"
                    + base64Encoder.encode(filename.getBytes("utf-8")) + "?=";
        } else {
            // 其它浏览器
            filenameEncoder = URLEncoder.encode(filename, "utf-8");                
        }

        //要下载的这个文件的类型-----客户端通过文件的MIME类型去区分类型
        response.setContentType(this.getServletContext().getMimeType(filename));
        //告诉客户端该文件不是直接解析 而是以附件形式打开(下载)----filename="+filename 客户端默认对名字进行解码
        response.setHeader("Content-Disposition", "attachment;filename="+filenameEncoder);

        //获取文件的绝对路径
        String path = this.getServletContext().getRealPath("download/"+filename);
        //获得该文件的输入流
        InputStream in = new FileInputStream(path);
        //获得输出流---通过response获得的输出流 用于向客户端写内容
        ServletOutputStream out = response.getOutputStream();
        //文件拷贝的模板代码
        int len = 0;
        byte[] buffer = new byte[1024];
        while((len=in.read(buffer))>0){
            out.write(buffer, 0, len);
        }

        in.close();
        //out.close();

 

文件名称是中文的下载(java)

标签:浏览器   head   res   while   context   直接   this   ext   输入   

原文地址:https://www.cnblogs.com/lztkdr/p/javaweb_download.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!