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

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

本问题已经有最佳答案,请猛点这里访问。

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

脚本:单击"报告生成器"按钮时,会出现一个加载轮图标,因为生成电子表格需要一段时间……现在,当下载完成并将电子表格保存到客户端计算机中时,加载轮图标仍在旋转。我想的唯一方法是检测下载是否完成,然后隐藏旋转的轮子,那么如何移除旋转的轮子呢?困惑:

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


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

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

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

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


    我同意Rcravens的回答,但将在选项2中添加以下内容:点击你的?下载?按钮,在服务器上调用电子表格的生成,并将其存储在temp目录中。通过Ajax(最好是WebWorkers),您可以通知用户生成正在进行中,并不断检查文件的状态。当检查和返回错误时,显示您的车轮。如果生成完成,请停止控制盘并通过javascript调用下载。

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

    希望有帮助。