Php 如何检测文件下载是否已完成?
有没有这样的方式/方法/策略来检测文件下载是否完成了 情景: 单击“报告生成器”按钮时,会出现加载轮图标,因为生成电子表格需要一段时间……现在,当下载完成并将电子表格保存在客户机中时,加载轮图标仍在那里。。我想到的唯一移除旋转轮的方法是检测下载是否完成,然后隐藏旋转轮。那怎么做呢困惑的:Php 如何检测文件下载是否已完成?,php,javascript,jquery,Php,Javascript,Jquery,有没有这样的方式/方法/策略来检测文件下载是否完成了 情景: 单击“报告生成器”按钮时,会出现加载轮图标,因为生成电子表格需要一段时间……现在,当下载完成并将电子表格保存在客户机中时,加载轮图标仍在那里。。我想到的唯一移除旋转轮的方法是检测下载是否完成,然后隐藏旋转轮。那怎么做呢困惑的: 在将我的问题标记为重复之前请注意:当我按下按钮时,我正在电子表格中写入一个文件,然后自动/强制下载。这与典型的静态文件下载不同这种长时间运行的流程不适合典型的web请求/响应工作流。是的,它会工作…但我相信有问
在将我的问题标记为重复之前请注意:当我按下按钮时,我正在电子表格中写入一个文件,然后自动/强制下载。这与典型的静态文件下载不同这种长时间运行的流程不适合典型的web请求/响应工作流。是的,它会工作…但我相信有问题,用户体验并不理想。我认为更好的工作流程是执行以下操作之一:
我认为这两个选项提供了更好的用户体验。我同意rcravens的答案,但会在选项2中添加以下内容: 通过单击»下载«按钮,您可以在服务器上调用电子表格的生成,并将其存储在临时目录中。通过AJAX(最好是webworkers),您可以通知用户正在生成文件,并不断检查文件的状态。在检查并返回false时,显示您的方向盘。如果生成完成,请停止控制盘并通过JavaScript调用下载 如果可以,如果您向用户显示生成电子表格的进度条,让用户知道原因和等待的时间,体验会更好
希望这会有所帮助。当用户请求下载时,为什么您仍然有一个旋转的轮子?旋转滚轮的存在向用户表明仍有一些事情要做,但下载是最后一步。浏览器有自己的下载管理器,可以告诉用户何时完成下载。你不需要自己做。试试看@remyabel这是因为我从数据库中提取数据,数据非常大,然后写在电子表格中。当我单击“报告生成”按钮时,会出现旋转的轮子,因为完成报告生成并自动弹出窗口保存生成的文件需要5到10分钟。您可以在窗口弹出之前使用javascript隐藏图标。第二个选项有一些内容..“动态”。此报告生成功能位于管理仪表板,不能延迟。他们希望在按下“生成报告”按钮时立即获得电子表格,他们可以等待5到10分钟。还有其他想法吗?…如何在窗口弹出之前检测?正如@Binu Pandian在第一条帖子的回复中提到的那样,我发现像“不能延迟……他们希望立即获得电子表格”这样的需求通常可以得到更多的审查。例如,上述两种情况在交易准确性(最新数据)和及时性(交付速度)方面都有所不同。选项一缓存数据。您的用户真的需要随每个请求生成此报告吗?如果这个需求被放宽,您将有一个更容易构建的系统。生成报告听起来在服务器上占用了大量资源。有多少管理员将同时访问此文件?做一些工程选择…享受。我会选择这个作为最好的答案,虽然它对我的问题毫无帮助,也许在另一个项目中它会有所帮助。