Servlet实现文件下载功能

本文实例为大家分享了Servlet实现文件下载的具体代码,供大家参考,具体内容如下

公司主营业务:网站制作、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联推出义马免费做网站回馈大家。

把文件目录直接暴露给用户是很不安全的。所以要用Servlet来做,而且这样做,文件的存储方式就更丰富了,可以是从文件系统上取来的,也可以是数据库中经过计算生成的,或者从其它什么稀奇古怪的地方取来的。

public class DownloadServlet extends HttpServlet {
  private String contentType = "application/x-msdownload";
  private String enc = "utf-8";
  private String fileRoot = "";


  /**
   * 初始化contentType,enc,fileRoot
   */
  public void init(ServletConfig config) throws ServletException {
    String tempStr = config.getInitParameter("contentType");
    if (tempStr != null && !tempStr.equals("")) {
      contentType = tempStr;
    }
    tempStr = config.getInitParameter("enc");
    if (tempStr != null && !tempStr.equals("")) {
      enc = tempStr;
    }
    tempStr = config.getInitParameter("fileRoot");
    if (tempStr != null && !tempStr.equals("")) {
      fileRoot = tempStr;
    }
  }

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String filepath = request.getParameter("filepath");
    String fullFilePath = fileRoot + filepath;
    /*读取文件*/
    File file = new File(fullFilePath);
    /*如果文件存在*/
    if (file.exists()) {
      String filename = URLEncoder.encode(file.getName(), enc);
      response.reset();
      response.setContentType(contentType);
      response.addHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
      int fileLength = (int) file.length();
      response.setContentLength(fileLength);
      /*如果文件长度大于0*/
      if (fileLength != 0) {
        /*创建输入流*/
        InputStream inStream = new FileInputStream(file);
        byte[] buf = new byte[4096];
        /*创建输出流*/
        ServletOutputStream servletOS = response.getOutputStream();
        int readLength;
        while (((readLength = inStream.read(buf)) != -1)) {
          servletOS.write(buf, 0, readLength);
        }
        inStream.close();
        servletOS.flush();
        servletOS.close();
      }
    }
  }

web.xml

  
    downloadservlet-name>
    org.mstar.servlet.DownloadServletservlet-class>
    
      fileRootparam-name>
      d:/tempparam-value>
    init-param>
    
      contentTypeparam-name>
      application/x-msdownloadparam-value>
    init-param>
    
      encparam-name>
      utf-8param-value>
    init-param>
  servlet>
  
    downloadservlet-name>
    /downurl-pattern>
  servlet-mapping>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持创新互联。


分享标题:Servlet实现文件下载功能
URL网址:http://bzwzjz.com/article/jihigp.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站建设 定制网站设计 成都企业网站建设公司 宜宾网站设计 重庆企业网站建设 企业网站建设 手机网站建设套餐 网站制作公司 成都网站设计 网站制作公司 成都网站建设 成都h5网站建设 企业网站制作 外贸网站建设 重庆网站建设 自适应网站设计 成都商城网站制作 成都网站制作 企业网站建设公司 网站制作 网站设计 网站设计