如何检测文件的下载是否已经完成?

时间:2013-09-07 15:21:41

标签: php javascript jquery

是否有这样的方式/方法/策略来检测文件的下载是否已完成?我的问题是这样的。

方案: 单击报告生成器按钮时,会出现一个加载轮图标,因为生成电子表格需要一段时间...现在,当下载完成并且电子表格保存在客户端的机器中时,加载轮图标仍然在旋转..我想要去掉那个纺车的唯一方法是检测下载是否完成,然后隐藏纺车..那怎么样? :困惑:

请在将我的问题标记为重复之前注意:当我按下按钮时,我会在电子表格中写入一个文件,然后自动/强制下载。它不像典型的静态文件下载

2 个答案:

答案 0 :(得分:1)

这种长时间运行的流程不适合典型的Web请求/响应工作流程。是的,它会起作用......但我相信存在问题并且用户体验并不理想。我更好的工作流程是执行以下操作之一:

  1. 缓存报告。如果报告中的数据可能是陈旧的 期间(例如1天)然后设置一个cron来生成报告和 然后将缓存的报告返回给用户。用户体验会 立即下载。

  2. 如果需要动态生成报告,请让用户请求报告并立即返回结果。稍后通过通知系统(假设他们在您的网站上有仪表板或其他内容)或电子邮件(在请求报告时必须向您提供电子邮件地址)提交报告。

  3. 我认为这两个选项可以提供更好的用户体验。

答案 1 :(得分:0)

我同意rcravens的答案,但会在选项2中添加以下内容: 通过单击»下载«按钮,您可以在服务器上调用电子表格的生成并将其存储在临时目录中。通过AJAX(最好是webworkers),您可以通知您的用户生成正在进行中并不断检查文件的状态。检查并返回false时,显示您的车轮。如果生成完成,请停止使用JavaScript并通过JavaScript调用下载。

如果可以,如果您向用户显示电子表格生成的进度条,那么体验会更好,所以他知道他等待的原因和持续时间。

希望有所帮助。