gpt4 book ai didi

jsf - 在应用服务器上限时存储 PDF 并提供下载

转载 作者:行者123 更新时间:2023-11-28 23:26:15 26 4
gpt4 key购买 nike

嘿,我正在使用 PrimeFaces 5/JSF 2 和 tomcat!

有人可以告诉我或给我一个关于如何在应用程序服务器(我使用的是 tomcat)上有限时间存储 pdf 文件然后下载它(如果这是用户请求的话)的想法。此功能与发票有关,因此我无法使用 dataExporter。

更具体地说,我几乎实现了这一点,但我不太确定。一个大问题是……我在哪里存储生成的文件?我浏览了一圈,有人说将文件保存在 webApp 或 tomcat 目录中是不行的。我还有什么其他解决方案?

最佳答案

利用File#createTempFile()设施。 servletcontainer 管理的临时文件夹作为应用程序范围的属性可用 ServletContext.TEMPDIR作为关键。

String tempDir = (String) externalContext.getApplicationMap().get(ServletContext.TEMPDIR);
File tempPdfFile = File.createTempFile("generated-", ".pdf", tempDir);
// Write to it.

然后将自动生成的文件名传递给负责提供它的人。例如

String tempPdfFileName = tempPdfFile.getName();
// ...

最后,一旦负责服务的人以文件名作为参数被调用,例如a simple 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());

另见:

关于jsf - 在应用服务器上限时存储 PDF 并提供下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36634141/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com