2012-08-13 24 views
5

我试图删除公开图片(cannedACLS3PutObjectRequest上传图片的属性为[S3CannedACL publicRead])上传到S3存储桶。如何使用AWS iOS SDK删除对象?

AWS SDK documentation中有S3DeleteObjectRequest类,但似乎没有this class的任何属性或初始化方法。

基于其他语言的示例代码,它看起来像应该有keybucket财产或初始化方法中设置这些属性,因为在iOS SDK中的S3PutObjectRequest类,用于将文件上传到一个桶。

这是怎么回事? SDK是否不完整?有没有办法使用iOS AWS SDK删除对象?

回答

6

刚刚关闭您链接到的文档,但这不起作用吗?

[s3Client deleteObjectWithKey:@"objectKey" withBucket:@"my-bucket"]; 
+0

工作就像一个魅力。猜猜我需要RTFM :) – 2012-08-16 20:53:46

1

艺术Gillespie的回答对我来说工作得很好。

不过,我也发现了,你可以通过在S3删除对象请求设置keybucket属性达到相同的:

S3DeleteObjectRequest *dor = [[S3DeleteObjectRequest alloc] init]; 
dor.key = AWS_OBJ_PATH; 
dor.bucket = AWS_BUCKET; 

[s3Client deleteObject:dor]; 
8

对于iOS的SDK为S3 V2,这个代码就派上了用场

AWSS3 *s3 = [AWSS3 defaultS3]; 
 
       AWSS3DeleteObjectRequest *deleteRequest = [AWSS3DeleteObjectRequest new]; 
 
       deleteRequest.bucket = S3BucketName; 
 
       deleteRequest.key = climb.imageKey; 
 
       [[[s3 deleteObject:deleteRequest] continueWithBlock:^id(BFTask *task) { 
 
        if(task.error != nil){ 
 
         if(task.error.code != AWSS3TransferManagerErrorCancelled && task.error.code != AWSS3TransferManagerErrorPaused){ 
 
          NSLog(@"%s Error: [%@]",__PRETTY_FUNCTION__, task.error); 
 
         } 
 
        }else{ 
 
         // Completed logic here 
 
        } 
 
        return nil; 
 
       }] waitUntilFinished];

这在很大程度上基于为这个图书馆编写的单元测试在这里:https://github.com/aws/aws-sdk-ios/blob/master/AWSS3Tests/AWSS3Tests.m