zoukankan      html  css  js  c++  java
  • 文件下载

    文件上传之后,需要进行文件下载。

    被下载的资源必须放到WEB-INF目录下(只要用户不能通过浏览器直接访问就OK,放在数据库中也可以),然后通过Servlet完成下载。

    在jsp页面中给出超链接,链接到 DownloadServlet,并提供要下载的文件名称。

    然后DownloadServlet获取文件的真实路径,然后把文件写入到response.getOutputStream()中。

    下载功能关键代码:

     1         //获得下载的文件名字
     2         String fileName = request.getParameter("fileName");
     3         //解决get方式中文乱码问题
     4         fileName = new String(fileName.getBytes("ISO-8859-1"),"UTF-8");
     5         //获得文件的绝对路径
     6         String realPath = request.getSession().getServletContext().getRealPath("/WEB-INF/upload/");
     7         //创建文件对象
     8         File file = new File(realPath,fileName);
     9         if(!file.exists()){
    10             response.getWriter().print("文件不存在。");
    11             return;
    12         }
    13         //让浏览器弹出下载的对话框
    14         response.addHeader("content-disposition", "attachment;filename="+fileName);
    15         //将输入流拷贝到输出流中,并且把文件名字展示在对话框上
    16         IOUtils.copy(new FileInputStream(file), response.getOutputStream());

    具体案例:

    1、浏览器通过url( http://localhost:8080/file_down/downlist )进行访问

      ListDownServlet部分关键代码:

     1         //定义存储文件名的集合
     2         List<String> fileNames = new ArrayList<String>();
     3         //获得存储文件的绝对目录
     4         String path = request.getSession().getServletContext().getRealPath("/WEB-INF/upload/");
     5         File file = new File(path);
     6         if(file.isDirectory()){
     7             File[] files = file.listFiles();
     8             for(File fi : files){
     9                 fileNames.add(fi.getName());
    10             }
    11         }
    12         //把文件名集合放入request域中
    13         request.setAttribute("downFiles", fileNames);
    14         //转发到down.jsp页面
    15         request.getRequestDispatcher("/down.jsp").forward(request, response);

      xml 配置:

      <servlet>
          <servlet-name>ListDownServlet</servlet-name>
          <servlet-class>com.shawn.controller.ListDownServlet</servlet-class>
      </servlet>
      
      <servlet-mapping>
          <servlet-name>ListDownServlet</servlet-name>
          <url-pattern>/downlist</url-pattern>
      </servlet-mapping>

      down.jsp 关键代码:

    1       <h1>下载列表</h1>
    2       <hr>
    3       <c:forEach var="fileName" items="${requestScope.downFiles }">
    4           <a href='down?fileName=<c:out value="${fileName }"></c:out>'><c:out value="${fileName }"></c:out></a><br>
    5       </c:forEach>

      DownServlet上面已经有了,xml配置不再赘述。

      链接: https://pan.baidu.com/s/1dFGmOq1 密码: 8ec7

  • 相关阅读:
    解决tmux在PuTTY下工作异常的问题
    使用 Tmux 强化终端功能
    Redis的五种数据结构
    Kubernetes(k8s) docker集群搭建
    C# 正则表达式大全
    C#异步编程(async and await)及异步方法同步调用
    ASP.NET MVC同时支持web与webapi模式
    ActiveX IE保护模式下的低权限操作路径及Windows操作系统特殊路径
    C#文件夹权限操作工具类
    C#创建文件夹并设置权限
  • 原文地址:https://www.cnblogs.com/ShawnYang/p/7647973.html
Copyright © 2011-2022 走看看