SpringMVC -> 下载文件(download)

方式一:

controller

1.要下载的图片地址:request.getServletContext().getRealPath("/upload") 2.下载的文件

@RequestMapping("/download")
  public String downLoad(HttpServletRequest request, HttpServletResponse response) throws IOException {
          
   
  //要下载的图片地址
    String upload = request.getServletContext().getRealPath("/upload");
    String fileName = "1.png";
     //1、设置response 响应头
     //设置页面不缓存,清空buffer
    response.reset();
    //字符编码
    response.setCharacterEncoding("utf-8");
     //二进制传输数据
    response.setContentType("multipart/form-data");
    //设置响应头
    response.setHeader("Content-Disposition",
            "attachment;fileName=" + URLEncoder.encode(fileName, "UTF-8"));

    File file = new File(upload, fileName);
     //2、 读取文件--输入流
    try (FileInputStream fileInputStream = new FileInputStream(file)) {
          
   
    //3、 写出文件--输出流
      try (ServletOutputStream outputStream = response.getOutputStream()) {
          
   

        int len = 0;
        byte[] bytes = new byte[1024];
         //4、执行 写出操作
        while ((len = fileInputStream.read(bytes)) != -1) {
          
   
          outputStream.write(bytes, 0, len);
          outputStream.flush();
        }
      }
    }
    return "redirect:/index.html";
  }

html

<a href="/download">点击下载</a>

方式二:

@Override
  @Override
  protected void doGet(HttpServletRequest req,
                       HttpServletResponse resp) throws ServletException, IOException {
          
   
    String upload = "E:\日常代码\springboot-01-yaml\src\main\resources\static\img\罗德.png";
    String substring = upload.substring(upload.lastIndexOf("\")+1);
    resp.setHeader("content-disposition", "attachment;filename="
    								+ URLEncoder.encode(substring,"UTF-8"));
    FileInputStream inputStream = new FileInputStream(upload);
    int len = 0;
    byte[] buffer = new byte[1024];
    ServletOutputStream outputStream = resp.getOutputStream();
    while ((len = inputStream.read(buffer)) != -1) {
          
   
      outputStream.write(buffer, 0, len);
    }
    inputStream.close();
    outputStream.close();
  }
经验分享 程序员 微信小程序 职场和发展