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


how to detect if the downloading of the file has finished?

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

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

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

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

  1. 缓存报表。如果报表中的数据可能过时周期(例如 1 天),然后设置 cron 以生成报告和然后将缓存的报表返回给用户。用户体验将立即下载。

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

我认为这两个选项提供了更好的用户体验。

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

如果可以的话,如果你向用户显示电子表格生成的进度条,体验会更好,这样他就知道为什么以及他等待了多长时间。

希望有帮助。