我有一个要求,我需要从网站下载 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/