栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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

第二种可以使用 ResponseEntity来向前端返回文件

一、使用response

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

  @RequestMapping("/d1")
  public ResultVo 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 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 entity=new ResponseEntity<>(bytes,headers,HttpStatus.OK);
      return entity;
    } catch (IOException e) {
      logger.error("下载出错:",e);
      return null;
    }
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/134910.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号