从 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中文网其他相关文章!