检查AmazonS3foriOS中的并行下载

检查AmazonS3foriOS中的并行下载,ios,objective-c,amazon-s3,Ios,Objective C,Amazon S3,你好。我想知道是否有一种方法可以使用Amazon的标准iOS SDK并行下载多个图像 它似乎是按顺序下载,而不是并行下载 我使用此委托计算下载的图像数量与请求的总数 -(void)request:(AmazonServiceRequest *)request didCompleteWithResponse:(AmazonServiceResponse *)response 当我在每次下载完成时检查时间戳时,每个图像的持续时间约为3-4秒: 11:46:22.744:图像1已完成下载 11:4

你好。我想知道是否有一种方法可以使用Amazon的标准iOS SDK并行下载多个图像

它似乎是按顺序下载,而不是并行下载

我使用此委托计算下载的图像数量与请求的总数

-(void)request:(AmazonServiceRequest *)request didCompleteWithResponse:(AmazonServiceResponse *)response
当我在每次下载完成时检查时间戳时,每个图像的持续时间约为3-4秒:

  • 11:46:22.744:图像1已完成下载
  • 11:46:27.942:图像2已完成下载
  • 11:46:31.085:图像3已完成下载
  • 11:46:34.044:图像4已完成下载
这些图像的文件大小几乎相同(500KB),因此我的印象是这些图像是按顺序下载的,而不是并行下载的

异步下载请求在具有不同transfer manager实例的单独线程中调用:

[self.transferManager downloadFile:targetFile bucket:S3_BUCKET key:s3Key]
有没有办法在代码中添加一些东西来并行下载图像?
此外,是否有一个程序来了解/监控所有下载请求是否并行移动

我不确定您使用的是哪个版本,但对于版本2,您可以控制异步上载/下载是按顺序还是并行进行。关于这些主题的更多细节,有很多非常有用的信息

下面我附上一个如何并行上传文件的示例。下载也一样。希望这有帮助。T

-(void) uploadAllFileRequests
{
    AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];
    NSMutableArray *tasks = [NSMutableArray new];

    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");
                }
            } else {

                NSLog(@"SUCCESS");
            }
            return nil;     
        }]];
    }
    [[BFTask taskForCompletionOfAllTasks:tasks] continueWithSuccessBlock:^id(BFTask *task)
     {
         NSLog(@"Finished all");
         return nil;
     }];
}

这里,self.arrayOfUploadRequests是一个AWSS3 TransferManagerRuploadrequest数组。

谢谢。这个逻辑在V2上工作。我还有一个在V1上运行的系统。V1是否有类似的方法?我知道有“S3TransferOperation.downloadFileOperation.isFinished”在下载完成之前,我是否需要每次调用它?@user3932017抱歉,我不确定它在版本1上如何工作。