springboot使用文件流下载

简介: springboot使用文件流下载
@RequestMapping(value = "/downloadFile", method = RequestMethod.GET)
@ResponseBody
@Validated
public void downloadFile(@NotBlank @RequestParam(value = "address") String address, HttpServletResponse response)
    throws IOException {
  fileService.downloadFile(address, response);
}
/**
 * 下载文件
 * 
 * @param address
 * @param response
 * @throws IOException
 */
@Override
public void downloadFile(String address, HttpServletResponse response) throws IOException {
  if (address.contains("%")) {
    try {
      address = URLDecoder.decode(address, "UTF-8");
    } catch (UnsupportedEncodingException e) {
      throw new CyException("文件路径有误");
    }
  }
  ServletOutputStream out = null;
  FileInputStream in = null;
  try {
    in = new FileInputStream(new File(address));
    String[] dir = address.split("/");
    String fileName = dir[dir.length - 1];
    // 设置响应类型为html,编码为utf-8,处理相应页面文本显示的乱码
    response.setContentType("application/octet-stream");
    // 设置文件头:最后一个参数是设置下载文件名
    response.setHeader("Content-disposition", "attachment;filename=" + fileName);
    out = response.getOutputStream();
    // 读取文件流
    int len = 0;
    byte[] buffer = new byte[1024 * 10];
    while ((len = in.read(buffer)) != -1) {
      out.write(buffer, 0, len);
    }
    out.flush();
  } catch (FileNotFoundException e) {
    throw new CyException("文件路径有误");
  } finally {
    response.flushBuffer();
    try {
      out.close();
      in.close();
    } catch (NullPointerException e) {
      throw new CyException("responseFileStream stream close() error:NullPointerException" + e.toString());
    } catch (Exception e) {
      throw new CyException("responseFileStream stream close() error:" + e.toString());
    }
  }
}
相关文章
|
5月前
|
Java
springboot使用文件流下载
springboot使用文件流下载
|
5月前
|
Java
SpringBoot文件上传
SpringBoot文件上传
|
18天前
|
运维 Java Spring
Springboot配置文件读取
Springboot配置文件读取
|
23天前
|
存储 前端开发 Java
基于SpringBoot实现文件上传和下载(详细讲解And附完整代码)
基于SpringBoot实现文件上传和下载(详细讲解And附完整代码)
|
5月前
|
Java
SpringBoot实现文件的上传下载
SpringBoot实现文件的上传下载
|
8月前
|
Java
SpringBoot-11-文件的上传和下载
本章节我们主要进行SpringBoot文件上传和下载以及的介绍涉及到Thumeleaf以及静态资源的设置,这是因为我们在进行项目开发的时候,经常会遇见需要用到文件上传和下载的时候,例如:通知文档下载,辞职报告模板的下载,员工信息的批量录入需要文件上传。
42 0
|
8月前
|
Java
Springboot文件上传
Springboot文件上传
32 0
springboot 各种文件下载方式(最全)
springboot 各种文件下载方式(最全)
2360 0
|
10月前
|
Web App开发 Java
Springboot文件上传与下载
Springboot文件上传与下载
103 0
|
10月前
|
Web App开发 Java
开发|Springboot文件上传与下载
开发|Springboot文件上传与下载
111 0