S3使用Amazon IOS Sdk在循环中上载多个图像,并获取公共url';s

S3使用Amazon IOS Sdk在循环中上载多个图像,并获取公共url';s,ios,Ios,如何使用Amazon IOS Sdk v2或v1在S3上上载多个图像文件。然后返回公共url并保存到Nsarray 选中下面的“我的代码”以上载单个图像。但是,现在我想一次上传多张图片 谁能帮我一下吗。 提前谢谢 AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager]; AWSS3TransferManagerUploadRequest *uploadRequest = [A

如何使用Amazon IOS Sdk v2或v1在S3上上载多个图像文件。然后返回公共url并保存到Nsarray

选中下面的“我的代码”以上载单个图像。但是,现在我想一次上传多张图片

谁能帮我一下吗。 提前谢谢

AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];

AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new];
uploadRequest.bucket = @"myBucket";
uploadRequest.key = @"imag.png";
uploadRequest.body = imagefileUrl;
uploadRequest.ACL=AWSS3BucketCannedACLPublicRead;

[[transferManager upload:uploadRequest] continueWithExecutor:[BFExecutor mainThreadExecutor]

  withBlock:^id(BFTask *task) {
  if (task.error) {
     if ([task.error.domain isEqualToString:AWSS3TransferManagerErrorDomain])
     {
         switch (task.error.code)
         {
                case AWSS3TransferManagerErrorCancelled:
                case AWSS3TransferManagerErrorPaused:
                break;

                default:
                        NSLog(@"Error: %@", task.error);
                        break;
          }
      } else {
               // Unknown error.
                      NSLog(@"Error: %@", task.error);
              }
  }
  if (task.result) {
      AWSS3TransferManagerUploadOutput *uploadOutput = task.result;
        // The file uploaded successfully.
   }
     return nil;
                 }];

您可以使用下面的自调用方法来实现所需的功能

@property int counter;


_counter = 0;// set this from where you are calling this method.
-(void)uploadToS3FromUploadQueue{
   //upload
NSArray *paths = arrayContainglocalPathsOfYourFilesToUpload;
NSString * documentsPath = [paths objectAtIndex:0];
NSString *mediaDocumentDirectoryPath = [NSString stringWithFormat:@"%@/%@",documentsPath];
[self uploadTransferManagerBlockWithKey:observationModel.actualname andBody:[NSURL fileURLWithPath:mediaDocumentDirectoryPath] ofBaseModel:baseModel];
}
-(void)uploadTransferManagerBlockWithKey:(NSString *)key andBody:(NSURL
*)objectURL ofBaseModel:(BaseModel *)baseModel{
AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new];
uploadRequest.bucket = S3BucketName;
uploadRequest.key = key;
uploadRequest.body = objectURL;
uploadRequest.ACL = AWSS3ObjectCannedACLPublicRead;
[[_transferManager upload:uploadRequest] continueWithExecutor:[BFExecutor mainThreadExecutor]
                                                    withBlock:^id(BFTask *task) {
                                                        if (task.error) {


                                                            if ([task.error.domain isEqualToString:AWSS3TransferManagerErrorDomain]) {
                                                                switch (task.error.code) {

                                                                    case AWSS3TransferManagerErrorCancelled:
                                                                        break;
                                                                    case AWSS3TransferManagerErrorPaused:
                                                                        break;

                                                                    default:
                                                                        NSLog(@"Error: %@", task.error);

                                                                        break;
                                                                }
                                                            } else {
                                                                // Unknown error.
                                                                NSLog(@"Error: %@", task.error);
                                                            }
                                                            // 

                                                            [uploadRequest cancel];
                                                            [_transferManager cancelAll];



                                                            counter = 0;



                                                                [self uploadToS3FromUploadQueue];
                                                            }



                                                        }

                                                        if (task.result) {
                                                            AWSS3TransferManagerUploadOutput *uploadOutput = task.result;
                                                             NSLog(@"Result Upload: %@", uploadOutput);
                                                            if (yourArrayContainingObject.count-1 == _counter) {
//Upload Completed
                                                            }
                                                            else{
                                                                _counter++;
                                                                [self uploadToS3FromUploadQueue];
                                                            }
                                                        }
                                                        return nil;
                                                    }];
}
我匆忙地写了这段代码,但它会给你一个完美的想法。 祝你好运