1

AFDownloadRequestOperation を使用しています。正常に動作していましたが、実行するたびに突然このエラーが発生します (実行するたびに同じ URL からダウンロードし、AppDelegate の Documents フォルダーと Temp フォルダーをクリアします)。

  1. ダウンロードを開始します。(ダウンロードする前に、Temp または Documents フォルダーに何もないことを手動で確認します。つまり、ダウンロードが完了したらファイルを保存する場所です)。

  2. ダウンロードは 1 ~ 2 秒で終了し、コードは成功ブロックに移動し、デバッグ コンソールには 206 ステータス コードが表示され、ファイルはどこからともなく魔法のように Documents フォルダーに配置され、正確なファイル サイズになります (以前は適切にダウンロードされ、私はこの問題に遭遇し始めました)。ファイルが壊れていて、開けません。

ここにコードスニペットがあります -

download_operation_progress_block = ^(AFDownloadRequestOperation *operation, NSInteger bytesRead, long long totalBytesRead, long long totalBytesExpected, long long totalBytesReadForFile, long long totalBytesExpectedToReadForFile) {
            float progress = ((float)totalBytesReadForFile) / totalBytesExpectedToReadForFile;
            dataFetcherObject.downloadProgressDetails.downloadPercentage = [NSNumber numberWithFloat:floorf(progress*100)];
        };
        download_operation_success_block = ^(AFHTTPRequestOperation *operation, id responseObject) {
            dataFetcherObject.downloadProgressDetails.isDownloadDone = [NSNumber numberWithBool:YES];
            dataFetcherObject.isDataFetched = @"Yes";
        };
        download_operation_failure_block = ^(AFHTTPRequestOperation *operation, NSError *error) {
            [dataFetcherObject.downloadProgressDetails.downloadOperation cancel];
            dataFetcherObject.isDataFetched = @"Error";
        };

        AFDownloadRequestOperation *operation = [[AFDownloadRequestOperation alloc] initWithRequest:contentDownloadRequest
                                                                                         targetPath:path
                                                                                       shouldResume:YES];

        [operation setCompletionBlockWithSuccess:download_operation_success_block
                                         failure:download_operation_failure_block];
        [operation setProgressiveDownloadProgressBlock:download_operation_progress_block];
       // operation.deleteTempFileOnCancel = TRUE;

        NSOperationQueue *operationQueue = [[NSOperationQueue alloc] init];
        [operationQueue addOperation:operation];
        dataFetcherObject.downloadProgressDetails.downloadOperation = operation;

この理由は何でしょうか。

4

0 に答える 0