Indy
とを使用してダウンロードマネージャーを開発していますDelphi XE
(アプリケーションは使用しますMultithreading
サーバーへの複数の接続を試行します)。すべて正常に動作しますが、最終的にダウンロードされたファイルが壊れている場合があり、ダウンロードした一時ファイルを確認すると、そのうちの 2 つまたは 3 つが最後にゼロで埋められていることがわかります。(各一時ファイルは、各接続のダウンロード結果です)。ファイルが大きいほど、結果として壊れた一時ファイルが多くなります。たとえば、65,536,000 バイトの一時ファイルの 1 つでは、0 から 34,359,426 の範囲のみが有効で、34,359,427 から 64,535,999 まではゼロでいっぱいでした。これらのゼロを削除すると、アプリケーションは欠落しているセグメントを自動的にダウンロードし、結果として得られるものは、問題が再び発生しなければ、正常なダウンロード ファイルです。ダウンロード速度を落とさずに、一時ファイルの末尾にあるゼロを取り除きたいです。
PS私が使用していて、メソッドを使用してファイルをTFileStream
直接送信し、ダウンロードしています。追加情報:パブリック変数に割り当てるイベントを処理します。ファイルがダウンロードされるたびに、ダウンロードされたファイルのサイズ (その変数) がテキスト ファイルに記録され、ログの内容から、ファイルが完全にダウンロードされたことがわかります (ゼロ バイトも含む)。TIdHTTP
GET
OnWork
AWorkCount
int64
Int64