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());
    }
  }
}


相关文章
|
XML 前端开发 Java
SpringBoot实现文件上传下载功能
本文介绍了如何使用SpringBoot实现文件上传与下载功能,涵盖配置和代码实现。包括Maven依赖配置(如`spring-boot-starter-web`和`spring-boot-starter-thymeleaf`)、前端HTML页面设计、WebConfig路径映射配置、YAML文件路径设置,以及核心的文件上传(通过`MultipartFile`处理)和下载(利用`ResponseEntity`返回文件流)功能的Java代码实现。文章由Colorful_WP撰写,内容详实,适合开发者学习参考。
1195 0
|
存储 前端开发 Java
springboot文件上传和下载接口的简单思路
本文介绍了在Spring Boot中实现文件上传和下载接口的简单思路。文件上传通过`MultipartFile`对象获取前端传递的文件并存储,返回对外访问路径;文件下载通过文件的uuid名称读取文件,并通过流的方式输出,实现文件下载功能。
springboot文件上传和下载接口的简单思路
|
前端开发 Java easyexcel
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
1142 8
|
easyexcel Java UED
SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
在SpringBoot环境中,为了优化大量数据的Excel导出体验,可采用异步方式处理。具体做法是将数据拆分后利用`CompletableFuture`与`ThreadPoolTaskExecutor`并行导出,并使用EasyExcel生成多个Excel文件,最终将其压缩成ZIP文件供下载。此方案提升了导出效率,改善了用户体验。代码示例展示了如何实现这一过程,包括多线程处理、模板导出及资源清理等关键步骤。
|
前端开发 Java easyexcel
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
1100 6
|
JavaScript 前端开发 Java
Springboot+vue实现文件的下载和上传
这篇文章介绍了如何在Springboot和Vue中实现文件的上传和下载功能,包括后端控制器的创建、前端Vue组件的实现以及所需的依赖配置。
1841 0
|
Java
Java SpringBoot FTP 上传下载文件
Java SpringBoot FTP 上传下载文件
772 0
|
JavaScript Java
SpringBoot 下载文件
SpringBoot 下载文件
510 0
|
JavaScript Java Spring
SpringBoot 接口输出文件流 & Vue 下载文件流,获取 Header 中的文件名
SpringBoot 接口输出文件流 & Vue 下载文件流,获取 Header 中的文件名
891 0
|
JavaScript Java Spring
Spring Boot 接口返回文件流
Spring Boot 接口返回文件流
1227 0