如何知道何时下载完成

问题描述:

嗨,我正在创建网上商店。在此shope人在线必须购买带有zip扩展名的文件。他们用自己的信用卡或其他方式获得钥匙并下载产品。我怎样才能知道他们何时完成产品下载? 谢谢如何知道何时下载完成

+0

您可以检测到它们触发了下载,但是如果它们完成了下载,则不会。除非有人反对,否则我很乐意知道。 – 2009-10-18 09:10:09

可惜的是没有真正这样做,因为有些客户可能无法下载文件一次(例如Downloadmanagers拆分下载分成几个部分parralel下载)好办法。

选项包括:

  • 如果这对你很重要的,它只能下载一次:你可以简单地 不支持恢复。然后,你可以 (只要最后一个字节 已发送)日志,如果该文件完全被 下载。如果下载量很小,这可能效果不错。
  • 否则你可以提供一些优雅 数据(我们通常允许下载 客户端下载5倍大小的实际下载的 ),并记录每个 下载尝试。

您不应该只计算下载的字节数(因为下载可能会中断)。而且不只是确定是否所有章节已被下载一次(也是因为下载可能会中断)

只是为了澄清:这一切都意味着你必须写自己的下载处理程序(文件服务器)。

您可以使用自定义文件服务器在http或ftp上工作,并让客户端收到最后一个文件片段后发送通知。

所有其他选项都有问题;客户端可能会使用下载管理器下载文件,因此如果有任何浏览器事件,您甚至无法注册。

+0

显然你的回答要求自定义文件服务器不支持恢复。 – Foxfire 2009-10-18 09:45:20

自定义服务器应用程序似乎确实是一个解决方案, 或可能某种脚本。

一个正常的HTTP服务器不通知的连接, 结束,但有可能,如果您生成的CGI/PHP/ASP/*脚本输出, 您阅读CGI文件/ PHP/ASP/*脚本语言和 发送到输出。当您到达文件末尾时,您会通过 执行通知,然后结束脚本。

当你这样做,它只会检测到完全下载的文件, ,如果连接中途中断,它不会标记 该文件被下载。

一个“CGI脚本”可以是编译的C程序,(或就此而言的任何其他的langauge )。无论如何编译代码。编译的程序 将会提供更好的性能,然后解释脚本解决方案。