Caching 玩框架2.1.3 pdf问题
所以我正在做一个学校的项目,我们设计了一个网络应用程序,它接收了很多用户信息,创建了一个pdf,然后应该向用户显示该pdf,以便他们可以打印或保存它。我们正在使用游戏!框架2.1.3作为我们的框架,服务器端使用Java。我使用Apache的PDFbox库创建pdf。在开发模式下,每件事情都能正常工作,即使用playsrun命令在本地主机上启动它。问题是,当我们将它放到服务器上并使用plays start命令I启动时,它似乎拍摄了我存放output.pdf文件的目录(或至少是资产/公用文件夹)的快照(我已尝试将该文件移到其他位置,但这似乎仍然会导致404错误)。起初,我认为这是我们部署到的liunx机器造成的缓存问题,并尝试了许多技巧来阻止浏览器缓存pdf 就像使用javascript在文件名上附加时间戳一样 在游戏中使用此缓存控制指令!文档Caching 玩框架2.1.3 pdf问题,caching,pdf,playframework,Caching,Pdf,Playframework,所以我正在做一个学校的项目,我们设计了一个网络应用程序,它接收了很多用户信息,创建了一个pdf,然后应该向用户显示该pdf,以便他们可以打印或保存它。我们正在使用游戏!框架2.1.3作为我们的框架,服务器端使用Java。我使用Apache的PDFbox库创建pdf。在开发模式下,每件事情都能正常工作,即使用playsrun命令在本地主机上启动它。问题是,当我们将它放到服务器上并使用plays start命令I启动时,它似乎拍摄了我存放output.pdf文件的目录(或至少是资产/公用文件夹)的快
“assets.cache./public/stylesheets/output.pdf”=“max age=0”
然后,我尝试每次将pdf保存为不同的文件名,并传回该文件的名称,并通过HTML中的文件结构直接调用它
这也适用于run命令,但不适用于start
最后我得出的结论是,当发出start命令时,它会聚集文件,因此只有在发出start命令时存在的文件才能被看到
我在这里读了文档
然后我注意到了这一部分
当您运行start命令时,Play分叉一个新的JVM并运行
默认的Netty HTTP服务器。标准输出流被重定向到
播放控制台,以便您可以监视其状态
因此,它派生出一个新的JVM这一事实似乎是造成我痛苦的原因
所以我的问题是,这是否可以通过某种方式让web应用程序创建和显示pdf表单?(如果我无法让它工作,我的唯一解决方案是
我能看到的是,我将不得不用HTML模拟表单,然后从那里填写它——我真的认为这是一种不好的方法
这似乎是应该有一个解决办法,但我似乎无法找到或想出一个请帮助
我在这里看过:
答案可能在那里,但我没有得到它的工作,我是这个游戏相当新手!Framework仍然您试图将生成的PDF文件交付给用户,方法是将其放置在assets目录中,并在HTML中添加指向该文件的链接。这在开发模式下工作,因为Play在目录中查找资产。它在生产环境中不起作用,因为当您执行
playdist
时,项目被包装到一个jar文件中,并且play应用程序无法修改jar文件的内容。(在开发模式下,Play有一个目录的类路径条目。在生产模式下,类路径指向jar文件)
使用JavaStream,您的思路是正确的。前进的道路是:
应用程序
对象中编写一个新的操作
,用于打开生成的文件,并提供该文件而不是网页Controller.ok(文件文件,字符串文件名)
用于执行此操作。(生成文件时,应为其指定一个唯一的名称,否则每个请求都将覆盖上一个请求中的文件。但您不希望用户看到唯一的名称)