首页 >Java >java教程 >如何使用 Spring 控制器流式传输文件以供下载?

如何使用 Spring 控制器流式传输文件以供下载?

DDD
DDD原创
2024-12-23 01:34:45315浏览

How to Stream Files for Download Using Spring Controllers?

从 Spring 控制器下载文件

当需要从网站下载 PDF 时,通常会考虑使用动态生成文件freemarker 和 iText 等 PDF 框架的组合。然而,探索其他选项可以带来更有效的解决方案。

一种有效的方法是利用 Spring 控制器来处理文件下载。为了实现这一点,您可以利用 Spring 提供的 HttpServletResponse 类。以下代码示例说明了如何设置用于文件下载的控制器:

@RequestMapping(value = "/files/{file_name}", method = RequestMethod.GET)
public void getFile(
    @PathVariable("file_name") String fileName, 
    HttpServletResponse response) {
    try {
      // get your file as InputStream
      InputStream is = ...;
      // copy it to response's OutputStream
      org.apache.commons.io.IOUtils.copy(is, response.getOutputStream());
      response.flushBuffer();
    } catch (IOException ex) {
      log.info("Error writing file to output stream. Filename was '{}'", fileName, ex);
      throw new RuntimeException("IOError writing file to output stream");
    }
}

通过利用response.getOutputStream(),您可以将任何数据(包括生成的PDF)流式传输到客户端。此外,您可以通过设置response.setContentType()来指定文件类型。对于 PDF,这将是 response.setContentType("application/pdf");.

以上是如何使用 Spring 控制器流式传输文件以供下载?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn