处理文件下载完成检测
问题:
检测浏览器何时完全接收到显示等待指示器时,动态生成的文件下载变得至关重要。目前,由于浏览器不一致,使用 iframe 的“load”事件无法解决此问题。
解决方案 1:基于浏览器的令牌验证
客户端 JavaScript解决方案涉及:
在服务器端,算法:
代码片段(JavaScript):
function setFormToken() { var downloadToken = new Date().getTime(); document.getElementById("downloadToken").value = downloadToken; return downloadToken; }
代码片段 (PHP):
// Set a cookie to unblock submit button when download begins. $TOKEN = "downloadToken"; $this->setCookieToken($TOKEN, $_GET[$TOKEN]);
解决方案 2:服务器轮询
或者,服务器端方法涉及:
此方法避免了创建临时服务器文件。然而,它需要在等待期间进行客户端与服务器的通信。
优点和缺点:
使用浏览器令牌允许动态检测,但可能存在浏览器兼容性问题。服务器轮询是一种更可靠但速度较慢的选项。
以上是如何在浏览器中可靠地检测文件下载完成?的详细内容。更多信息请关注PHP中文网其他相关文章!