如何使用亚马逊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;
}];发布于 2015-03-04 19:12:36
您可以使用如下所示的自调用方法来实现您想要的功能。
@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;
}];
}我写这段代码很匆忙,但我会给你一个完美的想法。祝好运
https://stackoverflow.com/questions/28850456
复制相似问题