我有一个Web应用程序,其中一个工作流程,用户可以下载动态生成的文件。输入是具有生成文件所需参数的表单。
我目前的解决方案是让他们提交此表格&在servlet端我更改了响应标题 - 内容处置为附件&还提供适当的哑剧型。
但我发现这种方法不够充分。因为有可能文件的生成可能需要很长时间,在这种情况下,在一定的超时后我直接在浏览器中得到500或503错误。我想这是当前方法的预期。
我希望我的工作流程足够灵活,可以在用户提交表单后立即告诉用户文件可能需要一段时间才能生成&我们将在文件准备就绪后立即显示该文件的链接。我想我也可以将文件或此消息通过电子邮件发送给他们,但这并不理想。
你们可以建议我解决这个问题吗?我应该更具体地提供信息吗?任何帮助表示赞赏。
答案 0 :(得分:1)
您可以使用表单数据对服务器进行异步Ajax调用,而不是直接提交表单。 在服务器上,您可以创建临时文件,并使用下载URL返回指向客户端的链接。 通过Javascript提交答案后,您可以向用户显示提示,即下载链接将在一分钟内出现。不要忘记清理临时文件!
对于提交Ajax调用,我建议使用Javascript Framework。看看JQuery:
答案 1 :(得分:1)
如果您想同步执行此操作(即让用户等待文档准备就绪,而不是让它们在等待时退出并执行其他操作),传统方法是将它们带到“报告加载”页面。
这将是一个页面:
同步是一种老派,但你的问题听起来像是你想要的方法。
异步方法包括: