【发布时间】:2014-08-29 08:56:36
【问题描述】:
我正在使用BFTask 和AWS 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