是否有一种简单可靠的方法来确认网络下载是否成功完成以使用 Python 或 WGET [对于大文件] 进行下载?我想确保在执行其他操作之前完整下载文件。
问问题
1594 次
2 回答
3
给定许多(我相信在实践中最多)HTTP/1.1 标头部分,您可以预期实体主体的长度。如果您有这种期望,您可以决定是否获得所有实体数据。有关完整详细信息,请参阅RFC 2616 第 4.4 节,但本质上是:
- 有时
content-length
准确地反映了实体的长度 - 有时可能没有实体主体,这取决于响应代码或响应是否响应
HEAD
请求 - 有时请求是传输编码的;HTTP 数据中有一些标记,上面写着“我现在完成了”(
Transfer-Encoding: chunked
) - 有时,消息在连接关闭时正式完成(在这种情况下,您无法区分获得整个信息和提前切断)
在除最后一个之外的所有情况下,您都可以判断您是否掌握了全部内容。我不知道是否有任何工具(wget 或现有的 python 库)为您提供了一个易于解释的信号,表明您的响应是否被截断。
于 2009-12-02T17:06:03.403 回答
1
HTTP 没有提供检查的方法。
分发大文件时采用的方式是,下载后计算文件的md5sum,并与服务器提供的md5sum进行比较。
例如,这就是 ubuntu 分发和检查他们的 CD 下载的方式。https://help.ubuntu.com/community/HowToMD5SUM
于 2009-12-02T16:43:32.357 回答