首页 > web前端 > js教程 > 如何在浏览器中可靠地检测文件下载完成?

如何在浏览器中可靠地检测文件下载完成?

Linda Hamilton
发布: 2025-01-05 21:06:49
原创
475 人浏览过

How Can I Reliably Detect File Download Completion in a Browser?

处理文件下载完成检测

问题:

检测浏览器何时完全接收到显示等待指示器时,动态生成的文件下载变得至关重要。目前,由于浏览器不一致,使用 iframe 的“load”事件无法解决此问题。

解决方案 1:基于浏览器的令牌验证

客户端 JavaScript解决方案涉及:

  • 生成用于下载的唯一令牌请求。
  • 使用令牌提交请求。
  • 显示“等待”指示器。
  • 设置计时器以定期检查具有令牌值的相应 cookie。
  • 找到 cookie 后隐藏指示器。

在服务器端,算法:

  • 检查请求中的令牌。
  • 如果找到,则使用令牌值设置 cookie。

代码片段(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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板