5

我正在尝试删除上传到 S3 存储桶的公共图像(上传图像cannedACL的属性)。S3PutObjectRequest[S3CannedACL publicRead]

S3DeleteObjectRequestAWS SDK文档中有一个类,但该类似乎没有任何属性或初始化方法。

根据其他语言的示例代码,看起来应该有keyorbucket属性或设置这些属性的初始化方法,就像在 iOS SDK 的S3PutObjectRequest类中一样,用于将文件上传到存储桶。

这里发生了什么?SDK只是不完整吗?有没有办法使用 iOS AWS 开发工具包删除对象?

4

3 回答 3

8

对于 S3 V2 的 iOS SDK,此代码派上用场

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

于 2015-03-03T21:56:16.280 回答
6

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

[s3Client deleteObjectWithKey:@"objectKey" withBucket:@"my-bucket"];
于 2012-08-16T18:38:00.300 回答
1

Art Gillespie 的回答对我来说也很好。

但是,我还发现您可以通过在 S3 删除对象请求上设置key和属性来实现相同的目的:bucket

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

[s3Client deleteObject:dor];
于 2014-07-15T09:37:10.187 回答