Rackspace クラウド ファイルから mp3 ファイルをダウンロードしています。大きなファイルの場合、ダウンロードは正常に完了しましたが、ファイルがまだ完全にダウンロードされていないという問題が発生しています。たとえば、40 MB
mp3 ファイル (01:00:00
期間) は mp3 ファイル (期間) としてダウンロードされ4.5 MB
ます00:10:30
。これは常に起こるわけではありません。
- 何が起こっているかについての指針はありますか?
- この問題はなぜ発生し、どうすればこの問題を解決できますか?
- ファイルが完全にダウンロードされたかどうかを確認する単純なチェックサム ロジックを作成するにはどうすればよいですか?
非同期リクエストを作成して送信する方法は次のとおりです。
ASIHTTPRequest *request;
request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:urlString]];
[request setShouldAttemptPersistentConnection:NO];
[request setAllowResumeForFileDownloads:YES];
[request setDownloadProgressDelegate:self];
[request setShouldContinueWhenAppEntersBackground:YES];
[request setUserInfo:userInfo];
[request setDownloadDestinationPath:downloadPath];
[request setTemporaryFileDownloadPath:[NSString stringWithFormat:@"%@.download", downloadPath]];
[self.networkQueue addOperation:request];
[self.networkQueue go];
4 つの同時ダウンロードでネットワーク キューを使用していることに注意してください。
ありがとう。
編集 (2012 年 3 月 5 日月曜日、午後 3 時 25 分)
したがって、さらに調査すると、がではなくデリゲート メソッドをASINetworkQueue
呼び出していることがわかります。オブジェクトによって返されるステータス コードはin method です。ステータス コードは です。requestDidFinishSelector
requestDidFailSelector
ASIHTTPRequest
206, HTTP/1.1 206 Partial Content
requestDidFinishSelector
200, HTTP/1.1 200 OK
理由はまだわかりません!そして、私はまだこれを修正する方法を知りません。部分的にダウンロードしたファイルを削除して、ダウンロード プロセスを再度開始する必要があるようです。この時点で、一時ファイル ie%@.download
が削除され、この部分的にダウンロードされたファイルが宛先パスに配置されます。