欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

Springmvc实现文件下载2种实现方法

时间:2021-07-24 09:34:03|栏目:JAVA代码|点击:

使用springmvc实现文件下载有两种方式,都需要设置response的Content-Disposition为attachment;filename=test2.png

第一种可以直接向response的输出流中写入对应的文件流

第二种可以使用 ResponseEntity<byte[]>来向前端返回文件

一、使用response

@RestController
@RequestMapping("/download")
public class DownloadController {

  @RequestMapping("/d1")
  public ResultVo<String> downloadFile(HttpServletResponse response){

    String fileName="test.png";
    try {
      //获取页面输出流
      ServletOutputStream outputStream = response.getOutputStream();
      //读取文件
      byte[] bytes = FileUtils.readFileToByteArray(new File("D:\\my-study\\test2.png"));
      //向输出流写文件
      //写之前设置响应流以附件的形式打开返回值,这样可以保证前边打开文件出错时异常可以返回给前台
      response.setHeader("Content-Disposition","attachment;filename="+fileName);
      outputStream.write(bytes);
      outputStream.flush();
      outputStream.close();
      return ResultVoUtil.success("success");
    } catch (IOException e) {
      return ResultVoUtil.error(e);
    }

  }
}

推荐使用这种方式,这种方式可以以json形式给前台返回提示信息。

二、使用ResponseEntity

@Controller
@RequestMapping("/download2")
public class DownloadController2 {

  private final static Logger logger= LoggerFactory.getLogger(CategoryDataController.class);


  @GetMapping("/d2")
  public ResponseEntity<byte[]> download2(){
    //获取文件对象
    try {
      byte[] bytes = FileUtils.readFileToByteArray(new File("D:\\my-study\\bill-admin\\test2.png"));
      HttpHeaders headers=new HttpHeaders();
      headers.set("Content-Disposition","attachment;filename=test2.png");
      ResponseEntity<byte[]> entity=new ResponseEntity<>(bytes,headers,HttpStatus.OK);
      return entity;
    } catch (IOException e) {
      logger.error("下载出错:",e);
      return null;
    }
  }
}

上一篇:Java的lambda表达式实现解析

栏    目:JAVA代码

下一篇:spring boot集成mongodb的增删改查的示例代码

本文标题:Springmvc实现文件下载2种实现方法

本文地址:http://www.codeinn.net/misctech/160761.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有