我有一个 Web 应用程序,其中一个工作流,用户可以下载动态生成的文件。输入是一个表单,其中包含生成文件所需的参数。
我目前的解决方案是让他们提交此表单并在 servlet 端更改响应 header - 将内容配置为附件并提供适当的 mime 类型。
但我发现这种方法是不够的。因为文件的生成可能需要很长时间,在这种情况下,在一定的超时后,我会在浏览器中直接收到 500 或 503 错误。我想这对于当前的方法来说是意料之中的。
我希望我的工作流程足够灵活,以便在用户提交表单后立即告诉他们生成文件可能需要一些时间,并且我们会在文件准备好后立即显示文件链接。我想我也可以通过电子邮件将文件或此消息发送给他们,但这并不理想。
你们能建议我解决这个问题的方法吗?我应该更具体地提供信息吗?任何帮助表示赞赏。
最佳答案
如果您想同步执行此操作(即让用户等待文档准备就绪,而不是让他们在等待期间离开并做其他事情),传统方法是将他们带到“报告加载”页面。
这将是一个页面:
- 1) 通知他们报告正在加载。
- 2) 刷新自身(使用元刷新标签或 javascript)
- 3) 刷新后,检查报告是否准备就绪以及:
- a) 如果还没有准备好就回到第一步
- b) 文件准备好后交给他们。
同步有点老套,但您的问题听起来就是您想要的方法。
异步方法包括:
- 使用 Ajax 使指向文档的链接在准备就绪后显示在页面上。
- 有一个单独的页面来显示以前生成的文档。用户可以在闲暇时访问此页面,同时,他们可以浏览站点的其余部分。这需要保留生成文档的历史记录。
- 按照您的建议,通过电子邮件发送。
关于java - 如何启用从浏览器下载动态生成的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8431222/