首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控件上载到S3,使用BFTask和AWS v2

控件上载到S3,使用BFTask和AWS v2
EN

Stack Overflow用户
提问于 2014-08-28 19:39:28
回答 1查看 1.2K关注 0票数 0

我正在使用BFTaskv2为iOS上传和下载文件到AWS S3存储。下面的代码运行得很好,但我想知道是否有人知道我如何才能更好地控制上传的最大数量,并更好地接收上传进度的反馈。我已经阅读了AWS v2的文档、源代码和BFTask自述文件,但我仍然不知道如何获得控制。例如,如何编辑以下代码,将同时运行的BFTasks数量限制为3,同时接收当前从总字节中上载的字节数?

代码语言:javascript
复制
-(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的数组。非常感谢您的建议。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-29 00:56:36

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

将并发上传的次数限制为3的一种方法是并行地执行三个任务。您可以将在序列中与组合在这个博客帖子的并行部分中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25556729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档