S3使用Amazon IOS Sdk在循环中上载多个图像,并获取公共url';s
如何使用Amazon IOS Sdk v2或v1在S3上上载多个图像文件。然后返回公共url并保存到Nsarray 选中下面的“我的代码”以上载单个图像。但是,现在我想一次上传多张图片 谁能帮我一下吗。 提前谢谢S3使用Amazon IOS Sdk在循环中上载多个图像,并获取公共url';s,ios,Ios,如何使用Amazon IOS Sdk v2或v1在S3上上载多个图像文件。然后返回公共url并保存到Nsarray 选中下面的“我的代码”以上载单个图像。但是,现在我想一次上传多张图片 谁能帮我一下吗。 提前谢谢 AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager]; AWSS3TransferManagerUploadRequest *uploadRequest = [A
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;
}];
}
我匆忙地写了这段代码,但它会给你一个完美的想法。
祝你好运