如何知道下载何时完成

嗨,我正在创建在线商店。 在这个shope人们在线必须购买带有zip扩展名的文件。 他们用信用卡或其他方法支付​​获得密钥和下载产品。 我怎么知道他们何时完成产品下载? 谢谢

不幸的是,没有真正好的方法可以做到这一点,因为有些客户可能不会立即下载文件(例如,Downloadmanagers将下载分为几个部分下载)。

选项包括:

  • 如果对您来说非常重要,它只能下载一次:您可能根本不支持恢复。 然后,您可以记录文件是否已完全下载(一旦发送了最后一个字节)。 如果下载量很小,这可能会很好。
  • 否则,您可以提供一些宽限数据(我们通常允许下载客户端下载5倍于实际下载的大小)并记录每次下载尝试。

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

只是为了澄清:这一切意味着你必须编写自己的下载处理程序(fileserver)。

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

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

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

普通的http服务器不通知连接的结束,但是如果你在cgi / php / asp / *脚本中生成输出,你可以用cgi / php / asp / *脚本语言读取文件并将其发送到输出。 当您到达文件末尾时,您将执行通知,然后结束脚本。

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

‘cgi-script’可以是已编译的c程序,(或任何其他语言)。 无论如何编译代码。 编译后的程序将提供比解释脚本解决方案更好的性能。