文件下载

来源:互联网 发布:淘货源软件下载 编辑:程序博客网 时间:2024/06/05 23:04

1.下载也就是向客户端响应字节数据。要把一个文件变成字节数组,可以通过Response.getOutputStream()给浏览器。

2.下载要点:两个头,一个流!

          >contentType:定义传递给客户端的是什么MIME类型。例如:image/jpeg、text/html 等等

                       >>contentType获取方式:通过ServletContext类中的getMimeType(String filename)得到contentType类型。

          >Content-Disposition:它的默认值是inline。表示直接在浏览器中打开!若定义为:attachment;filename=xxx。则表示以附件的形式下载,filename后面跟下载时显示的文件名。

          >流:要下载的文件数据。

3.下载框中出现中文乱码问题

        >FireFox浏览器:采用的是Base64编码方式。

        >其它大部分浏览器:采用的是URL编码方式。

        >两种处理方案:

                >>最直接、通用的方法:对下载框中出现的文件名先进行如下处理  filename = new String(filename.getBytes("UTF-8"),"ISO8859-1");

                >>一劳永逸方案:

 private String filenameEncoding(String filename, HttpServletRequest request) throws UnsupportedEncodingException {
  String agent = request.getHeader("User-Agent");//获取浏览器信息
  if(agent.contains("FireFox")) {//火狐浏览器
   BASE64Encoder base64Encoder = new BASE64Encoder();
   filename = "=?utf-8?B?"
     +base64Encoder.encode(filename.getBytes("utf-8"))
     +"?=";
  } else if(agent.contains("MSIE")) {//IE浏览器
   filename = URLEncoder.encode(filename,"utf-8");
  } else {
   filename = URLEncoder.encode(filename, "utf-8");
  }
  return filename;
 }

 

 

0 0