質問
Web ダウンロードが Python または WGET (大きなファイルの場合) を使用して正常に完了したことを確認する簡単で信頼性の高い方法はありますか?別のアクションを実行する前に、ファイル全体がダウンロードされたことを確認したいと考えています。
解決
多くの (実際にはほとんどが) HTTP/1.1 ヘッダー セクションがあるとすると、エンティティ本体の長さについての予想が得られます。その期待がある場合は、すべてのエンティティ データを取得したかどうかを判断できます。見る RFC 2616 セクション 4.4 詳細については、基本的に次のとおりです。
- 時々、
content-length
エンティティ本体の長さを正確に反映します - 応答コードや応答が
HEAD
リクエスト - リクエストが転送エンコードされる場合もあります。HTTP データには「これで完了です」というマーカーがいくつかあります (
Transfer-Encoding: chunked
) - また、場合によっては、接続が閉じられたときにメッセージが正式に完了することもあります (この場合、すべてを取得することと、早期に切断されることを区別することはできません)。
最後のケースを除くすべてのケースで、すべてを取得したかどうかがわかります。特定のツール (wget または既存の Python ライブラリ) が、応答が切り詰められたかどうかを簡単に解釈できる信号を提供するかどうかはわかりません。
他のヒント
HTTPがそれをチェックする方法はありません。
大容量のファイルを配布する際に使用される方法は、ダウンロード後、ファイルのmd5sumのを計算し、サーバが提供するのmd5sumと比較されます。
例は、それは、Ubuntuの配布やそのCDのダウンロードを確認するにはどうするかです。 https://help.ubuntu.com/community/HowToMD5SUMする
所属していません StackOverflow