如何判断一个文件是否真的被下载和保存,尽管浏览器预取/缓存
How to tell if a file was really downloaded and saved, despite browser prefetch/cache?
我正在创建一个脚本来保持下载统计数据,但我只想在文件实际下载时更新统计数据。
问题是浏览器(例如,ie9, Chrome,…)在"保存/打开"对话框仍然打开时自动开始下载文件。这意味着在用户指定保存文件的位置之前,文件可以完全下载(到浏览器指定的临时目录中)(或者当Explorer仍然显示黄色警告条时)。
用户可能决定取消保存,即使文件已成功下载。如何告诉浏览器不要自动开始下载?也许是一些HTTP报头?还有其他解决方案吗?
你不能做你想做的事。这是不可能的,至少按你的要求是不可能的。
您可以做的是在安装程序中放入一些代码,这些代码在服务器运行时伸出,然后您的脚本可以跟踪它。这通常是这样做的,但是肯定不是万无一失的。许多人下载软件并离线安装。(尤其是拨号上网用户,目前仍有成千上万的用户。)此外,也不能保证安装程序不会被防火墙软件或其他东西阻止。
所以这完全取决于你有多需要知道它是什么时候安装的。如果它很重要,那么安装程序需要在安装之前与服务器进行验证。当然,这可以被黑掉,而且你对此无能为力。但是,我怀疑它会达到你的目的。
另外,不要忘记每次下载要安装多次。
我想你看不出来。在发送给客户端之前,您必须让某人为软件付费。
我建议你让网站记住购买,所以如果在下载过程中出现问题,用户可以重试,而不必再次付费(或联系管理员)。
嗯,有一些中间页面来确认"是的,我想下载这个",可能会在很大程度上消除取消的下载。
现在,我不确定这是否完全可能,但是您可以尝试通过PHP提供文件,而不是从Apache下载。在PHP中,您可以使用readfile从PHP脚本中提供文件。因此,您可以调用readfile、flush并确定所服务的字节数。如果它不等于文件中的字节数,则中断。我不确定readfile是否可以这样工作,但是值得尝试一下。
注意,这仍然不能解决Marcel提到的在tempfile下载完成之前点击'Cancel'的问题。
- UIWebView正在保存用户名和密码
- 脚本下载和执行的顺序与 document.write .
- j查询保存时间和到期日期
- Javascript - 解析 - 云代码 - 保存之前和保存之后
- 解析服务器 - 云代码 保存前和保存后相互影响
- 使用 PHP 和 JavaScript 在黑莓中下载和保存图像
- CDN托管的JavaScript库与下载和缩小
- 在 javascript 中创建一个全局库,同时保存状态和行为
- 如何在不下载和上传数据的情况下复制具有许多记录的 Firebase 子项
- 如何在 JavaScript 中从 API 下载和解析 JSON
- 如何在javaScript:Jquery中保存/持久化和访问客户端的数据
- Javascript:通过开机自检启动文件下载和路由文件
- 文档生成、强制下载和刷新页面
- windows8存储javascript应用程序,从web下载和保存图像
- Rhino:能够暂停、保存状态和恢复javascript
- 使用HTML5/Javascript下载和命名视频
- 仅在支持的浏览器中下载和执行脚本
- 创建动态表单元素,如何保存它们和它们的状态
- 如何判断一个文件是否真的被下载和保存,尽管浏览器预取/缓存
- 仅使用javascript生成和保存/下载文件