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();
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值