• 使用servlet完成文件下载


    文件下载的关键两步骤

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

    如果文件中出现了中文乱码的错误,添加一下代码: (以下代码要添加到上面两行的上面) 

      filename = new String(filename.getBytes("ISO8859-1"),"UTF-8");//解决乱码问题 filename=文件名
      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");
      }

      原因:为什么在设置了new String(filename.getBytes("ISO8859-1"),"UTF-8");之后,下载中文文件为什么文件名为空?

      解答:filename="+filenameEncoder 客户端默认对名字进行解码,不同的客服端解码的方式不同。如果没有上述语句的话,也就是filename还没有进行编码,那怎么能够解码呢,自然而然的,filename=""。

  • 相关阅读:
    Python学习————作业
    Python学习————前端
    Python学习————前端(JS)
    Python————前端
    Python学习————作业(简单页面设计)
    Python学习————前端(注册)
    Python学习————表格与表单
    Python学习————作业(前端)
    Python学习————前端
    51Nod1307 绳子与重物
  • 原文地址:https://www.cnblogs.com/empcl1314/p/6947719.html
Copyright © 2020-2023  润新知