The*_*heo 5 pdf jsf tomcat download primefaces
您好,我正在使用 PrimeFaces 5/JSF 2 和 tomcat!
有人可以向我展示或给我一个关于如何在应用程序服务器上在有限时间内存储 pdf 的想法吗(我正在使用 tomcat),然后下载它(如果这是用户请求的)。此功能与发票相关,因此我无法使用 dataExporter。
更具体地说,我几乎实现了这个,但我对此不太确定。一个大问题是......我在哪里存储生成的文件?我浏览了一下,有人说将文件保存在webApp或tomcat目录中是不行的。我还有什么其他解决方案?
利用File#createTempFile()
设施。servlet容器管理的临时文件夹可作为应用程序范围的属性使用ServletContext.TEMPDIR
as 键。
String tempDir = (String) externalContext.getApplicationMap().get(ServletContext.TEMPDIR);
File tempPdfFile = File.createTempFile("generated-", ".pdf", tempDir);
// Write to it.
Run Code Online (Sandbox Code Playgroud)
然后只需将自动生成的文件名传递给负责提供服务的人即可。例如
String tempPdfFileName = tempPdfFile.getName();
// ...
Run Code Online (Sandbox Code Playgroud)
最后,一旦以文件名作为参数调用负责提供服务的人(例如一个简单的 servlet ),则只需按如下方式对其进行流式传输:
String tempDir = (String) getServletContext().getAttribute(ServletContext.TEMPDIR);
File tempPdfFile = new File(tempDir, tempPdfFileName);
response.setHeader("Content-Type", "application/pdf");
response.setHeader("Content-Length", String.valueOf(tempPdfFile.length()));
response.setHeader("Content-Disposition", "inline; filename=\"generated.pdf\"");
Files.copy(tempPdfFile.toPath(), response.getOutputStream());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1294 次 |
最近记录: |