【问题标题】:Control uploads to S3 using BFTask and AWS SDK iOS v2使用 BFTask 和 AWS SDK iOS v2 控制上传到 S3
【发布时间】:2014-08-29 08:56:36
【问题描述】:

我正在使用BFTaskAWS SDK v2 for iOS 将文件上传和下载到AWS S3 存储。以下代码运行良好,但我想知道是否有人知道我可以如何更好地控制允许的最大上传数量以及接收上传进度反馈的更好方法。我已经阅读了 AWS SDK v2、源代码和 BFTask 自述文件的文档,但我仍然不确定如何获得控制权。例如,我将如何编辑以下代码以将同时运行的 BFTask 数限制为 3,并且还接收当前上传的字节总数中的字节数?

-(void) uploadAllFileRequests
{
    AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];
    __block int uploadCount = 0;
    __block int uploadSuccess= 0;
    __block int uploadFailure= 0;

    NSMutableArray *tasks = [NSMutableArray new];
    unsigned long totalnumberoffiles=self.arrayOfUploadRequests.count;

    for (__block AWSS3TransferManagerUploadRequest *uploadRequestLocal in self.arrayOfUploadRequests)
    {

        [tasks addObject:[[transferManager upload:uploadRequestLocal] continueWithBlock:^id(BFTask *task) {
            if (task.error != nil) {
                 if( task.error.code != AWSS3TransferManagerErrorCancelled
                   &&
                   task.error.code != AWSS3TransferManagerErrorPaused
                   )
                {
                    NSLog(@"ERROR: %@",StatusLabelFailed);
                    uploadFailure ++;
                }
            } else {
                uploadCount ++;
                uploadSuccess ++;
                NSLog(@"ETag: %@           %@ : %3.2f",[task.result valueForKey:@"ETag"], StatusLabelUploading, (uploadCount*1.0/totalnumberoffiles)*100.);
            }
            return nil;     
        }]];
    }
    [[BFTask taskForCompletionOfAllTasks:tasks] continueWithSuccessBlock:^id(BFTask *task)
     {
         NSLog(@"Finished:  Success: %i - Failed: %i  -",uploadSuccess,uploadFailure);
         return nil;
     }];
}

这里的self.arrayOfUploadRequests 是一个包含AWSS3TransferManagerUploadRequest 的数组。非常感谢您的建议。谢谢!

【问题讨论】:

    标签: ios objective-c amazon-web-services amazon-s3


    【解决方案1】:

    AWSRequestAWSS3TransferManagerUploadRequest 的超类,具有称为uploadProgressdownloadProgress 的属性。您可以实现AWSNetworkingUploadProgressBlockAWSNetworkingDownloadProgressBlock 来检索进度反馈。

    将并发上传数量限制为三个的一种方法是按顺序并行执行三个任务。您可以组合此blog post顺序并行部分。

    【讨论】:

      猜你喜欢
      • 2014-10-11
      • 2015-04-18
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      • 2017-10-17
      • 2017-02-07
      • 2014-10-05
      • 2021-06-13
      相关资源
      最近更新 更多