Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何知道下载何时完成_C#_Asp.net_Download - Fatal编程技术网

C# 如何知道下载何时完成

C# 如何知道下载何时完成,c#,asp.net,download,C#,Asp.net,Download,嗨,我正在创建网上商店。在这个商店里,人们必须在线购买带有zip扩展名的文件。他们用信用卡或其他方式支付,获得密钥并下载产品。我如何知道他们何时完成产品下载? 谢谢您可以使用在http或ftp上工作的自定义文件服务器,并让它在客户端收到最后一个文件片段后发送通知 所有其他选择都有问题;客户端可能会使用下载管理器下载文件,因此您甚至无法注册任何浏览器事件(如果有) 不幸的是,没有真正好的方法可以做到这一点,因为有些客户端可能不会立即下载该文件(例如,DownloadManager将下载分成多个pa

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

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


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

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

选项包括:

  • 如果它对你非常重要,它只能下载一次:你可以 根本不支持恢复。那你呢 如果文件已完全删除,则可以进行日志记录 下载(只要最后一个字节 已发送)。如果下载量小,这可能会很好地工作
  • 否则你可以提供一些恩典 数据(我们通常允许下载 客户端下载的大小为5倍 下载)并记录每个 下载尝试
您不应该只计算下载的字节数(因为下载可能会中断)。不仅要确定所有部分是否都下载过一次(还因为下载可能会中断)


澄清一下:所有这些都意味着您必须编写自己的下载处理程序(文件服务器)。

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

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

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

“cgi脚本”可以是编译的c程序(或任何其他语言) 就此而言)。无论如何编译代码。编译程序
将提供比解释脚本解决方案更好的性能。

您可以检测到它们触发下载,但如果它们完成下载,则无法检测到。除非有人不这么认为,否则我很乐意知道。显然,您的答案要求自定义文件服务器不支持恢复。