java - 从 Spring Controller 下载文件

标签 java spring file download controller

我有一个要求,我需要从网站下载 PDF。 PDF需要在代码中生成,我认为这将是freemarker和iText等PDF生成框架的组合。有更好的办法吗?

但是,我的主要问题是如何允许用户通过 Spring Controller 下载文件?

最佳答案

@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("application/pdf");

关于java - 从 Spring Controller 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5673260/

相关文章:

performance - S3 中每个目录的最大文件数

带有嵌入式数据库的 Java 桌面应用程序

java - Android 中的 drawRoundRect 不工作

java - 获取 0 到 255 之间数字的字节值?

spring - WebApplicationInitializer的onStartup方法永远不会被调用

ruby-on-rails - ruby on rails 中的文件存储库

使用scanf的C多维数组大小

java - 我可以提供使用泛型类型的方法,其中泛型类型始终是类吗?

java - spring-context.xml 的位置

java - Spring NullPointerException 尽管使用了相关注释