AWS S3检查存储桶中是否存在密钥

时间:2015-09-15 10:16:51

标签: ios objective-c amazon-s3

我有一个iOS应用程序,可以上传和下载文件到Amazon AWS S3 Bucket。我希望我的应用程序上传文件,如果它的名称不存在。如果存在则下载文件及其名称。我找到了关于检查文件是否存在的答案。 (https://stackoverflow.com/a/27932233/4646247)但没有例子。

1 个答案:

答案 0 :(得分:0)

您可以列出存储桶中存在的所有文件的名称,并查看您要上传的文件是否已存在。您可以按;

列出文件
- (void) listFilesAWS_S3WithBucketName: (NSString *) bucketName
{
    AWSS3 *s3 = [AWSS3 defaultS3];

    AWSS3ListObjectsRequest *listObjectReq=[AWSS3ListObjectsRequest new];
    listObjectReq.bucket=bucketName;

    [[[s3 listObjects:listObjectReq] continueWithBlock:^id(BFTask *task) 
    {
        if(task.error)
        {
            NSLog(@"the request failed. error %@",task.error);
        }
        else if(task.result)
        {
            AWSS3ListObjectsOutput *listObjectsOutput=task.result;
            NSArray * files = listObjectsOutput.contents;
            NSLog(@"files: %@\ncount: %lu", files, (unsigned long)files.count);
            for(AWSS3Object *file in files)
            {
                NSString *key = [file key];
                NSLog(@"%@", key);
                //***HERE COMPARE STRINGS AND CHECK TO SEE IF THIS IS YOUR FILE***
            }
        }
    }] waitUntilFinished];
}