C# 如何知道下载何时完成
嗨,我正在创建网上商店。在这个商店里,人们必须在线购买带有zip扩展名的文件。他们用信用卡或其他方式支付,获得密钥并下载产品。我如何知道他们何时完成产品下载?C# 如何知道下载何时完成,c#,asp.net,download,C#,Asp.net,Download,嗨,我正在创建网上商店。在这个商店里,人们必须在线购买带有zip扩展名的文件。他们用信用卡或其他方式支付,获得密钥并下载产品。我如何知道他们何时完成产品下载? 谢谢您可以使用在http或ftp上工作的自定义文件服务器,并让它在客户端收到最后一个文件片段后发送通知 所有其他选择都有问题;客户端可能会使用下载管理器下载文件,因此您甚至无法注册任何浏览器事件(如果有) 不幸的是,没有真正好的方法可以做到这一点,因为有些客户端可能不会立即下载该文件(例如,DownloadManager将下载分成多个pa
谢谢您可以使用在http或ftp上工作的自定义文件服务器,并让它在客户端收到最后一个文件片段后发送通知
所有其他选择都有问题;客户端可能会使用下载管理器下载文件,因此您甚至无法注册任何浏览器事件(如果有) 不幸的是,没有真正好的方法可以做到这一点,因为有些客户端可能不会立即下载该文件(例如,DownloadManager将下载分成多个parralel部分下载) 选项包括:
- 如果它对你非常重要,它只能下载一次:你可以 根本不支持恢复。那你呢 如果文件已完全删除,则可以进行日志记录 下载(只要最后一个字节 已发送)。如果下载量小,这可能会很好地工作
- 否则你可以提供一些恩典 数据(我们通常允许下载 客户端下载的大小为5倍 下载)并记录每个 下载尝试
澄清一下:所有这些都意味着您必须编写自己的下载处理程序(文件服务器)。一个定制的服务器应用程序似乎确实是一个解决方案, 或者可能是某种脚本 普通http服务器不会通知连接的结束, 但是,如果您以cgi/php/asp/*脚本生成输出, 您可以使用cgi/php/asp/*脚本语言读取该文件,然后 将其发送到输出。当您到达文件末尾时,您 执行通知,然后结束脚本 这样做时,它只会检测到完全下载的文件, 如果连接中途中断,则不会标记 已下载的文件 “cgi脚本”可以是编译的c程序(或任何其他语言) 就此而言)。无论如何编译代码。编译程序
将提供比解释脚本解决方案更好的性能。您可以检测到它们触发下载,但如果它们完成下载,则无法检测到。除非有人不这么认为,否则我很乐意知道。显然,您的答案要求自定义文件服务器不支持恢复。