2017-03-20 15 views
0

私はS3を使用して画像をアップロードしています。奇妙なことに、ブロックに入ることさえありません。したがって、エラーも成功表示もありません。何も返されません。私はこれが以前に起こったのを見たことがありません。AWS S3のアップロードが動作しない

AWSS3TransferManagerUploadRequest *amazonUploadRequest = [AWSS3TransferManagerUploadRequest new]; 
    amazonUploadRequest.bucket = AWS_PICTURE_BUCKET; 
    amazonUploadRequest.body = fileUrl; 
    amazonUploadRequest.key = key; 
    amazonUploadRequest.contentType = @"image/jpeg"; 

    AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager]; 
    [[transferManager upload:amazonUploadRequest] continueWithBlock:^id _Nullable(AWSTask * _Nonnull task) { 
//Never reaches here. 
     if (task.error == nil) { 
      completionBlock(); 
     } else { 
      errorBlock(task.error); 
     } 
     return nil; 
    }]; 

誰でもこの問題を見たことがありますか?私は過去にこれを使って、1つまたは2つの画像、さらには50の画像をループにアップロードしました。私は現在100で今しようとしており、それは一度も実行されません。

+0

あなたは[[transferManager upload:amazonUploadRequest] continueWithExecutor:..]を試してみましたか? –

+0

あなたのコードに問題はありません、continueWithExecutorを使って試してみてください!! –

+0

@nikdange_meはそれを試しました。それはブロックに入っていません。 –

答えて

0

見つけました!

アップロードごとにdispatch_semaphore_tを非同期で使用していたので、GCD has a 64 thread limitとなり、100 +アップロードでそれを打つことになりました。これはすべてのアップロードを待つ(DISPATCH_TIME_FOREVER)ため、AWSメソッドが応答していないように思えました。

私はdispatch_semaphore_tを調整し、個々のアップロードのために私の非同期ブロックを取り除くことで修正しました。このような状況におかれた場合は、pauseボタンを押して、一度に実行されているスレッドの数を探します。

ありがとうございます!

関連する問題