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

    文件下载案例

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>Title</title>
    </head>
    <body>
    <a id="tu" href="/img/3.jpg">图片</a>
    <hr>
    <a id="tu2" href="/downloadServlet?filename=3.jpg">图片2</a>
    <script>
      window.onload = function () {
          var tu = document.getElementById("tu");
          tu.onclick = function () {

          }
      }
    </script>
    </body>
    </html>
    @WebServlet("/downloadServlet")
    public class DownloadServlet extends HttpServlet {
      @Override
      protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
          this.doPost(req, resp);
      }

      @Override
      protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
          req.setCharacterEncoding("utf-8");
          resp.setContentType("text/html;charset=utf-8");
          String contextPath = req.getContextPath();
          //1、获取请求参数,文件名
          String filename = req.getParameter("filename");
          System.out.println("filename---"+filename);
          //2使用字节输入流加载文件进内存
          //2.1 找到文件服务器路径
          ServletContext servletContext = this.getServletContext();
          String realPath = servletContext.getRealPath("/img/" + filename);
          System.out.println("realPath--"+realPath);
          //2.2使用字节流关联
          FileInputStream fis = new FileInputStream(realPath);

          //3设置response响应头
          //3.1设置相应头类型,content-type
          String mimeType = servletContext.getMimeType(filename);
          System.out.println("mimeType---"+mimeType);
          resp.setHeader("content-type",mimeType);
          //3.2设置响应头打开方式content-disposition
          resp.setHeader("content-disposition","attachment;finame="+filename);
          //4将输入流的数据写入到输出流
          ServletOutputStream sos = resp.getOutputStream();
          byte[] bytes = new byte[1024 * 8];
          int len = 0;
          while ((len = fis.read(bytes)) != -1){
              sos.write(bytes,0,len);
          }
          if (fis != null){
              fis.close();
          }
      }
    }
  • 相关阅读:
    CSU
    ACM-ICPC Beijing Online A The Book List
    约瑟夫环问题
    HDOJ-1124 Factorial 数论
    玲珑杯 ACM热身赛 #2.5 A 记忆化搜索+瞎搞
    CF 711B
    hdu-4289 最大流Dinic模板题
    最大流朴素算法
    HDU-3729 二分匹配 匈牙利算法
    二分图匹配-匈牙利算法
  • 原文地址:https://www.cnblogs.com/lxy522/p/12937134.html
Copyright © 2011-2022 走看看