如何在Amazon S3 Bucket中获取文件夹内的文件列表

时间:2013-03-07 16:15:59

标签: ios objective-c amazon-s3 directory

好的,我看到thisthisdocumentation告诉亚马逊是平面文件系统,要创建/获取/设置文件夹,必须使用Delimiter ='/'和字首。

但我没有得到它,我的意思是我无法编写代码。所以我有一个存储桶和一个包含一些文件的文件夹,我想要这些文件的列表

所以我尝试了bucket/folder/bucket/folder/bucket/folder/所有这一切都失败了。

如果我只尝试bucket,则可以正常使用

S3ListObjectsRequest *getListObjectsRequest= [[S3ListObjectsRequest alloc] initWithName:@"bucket"]; // tried also here bucket/folder , /bucket/folder/ ,  bucket/folder/ 
    S3ListObjectsResponse *getListObjectsResponse = [self.s3 listObjects:getListObjectsRequest];

    //test to see inside of the folder
    NSArray *objectsinamazon = [self.s3 listObjectsInBucket:@"bucket"]; //as I said I tried bucket/folder , /bucket/folder/ ,  bucket/folder/ all od this fails.

    NSLog(@"array is %@",objectsinamazon);

    S3ListObjectsResult *listObjectsResults = getListObjectsResponse.listObjectsResult;



    for (S3ObjectSummary *objectSummary in listObjectsResults.objectSummaries) {

        NSLog(@"Bucket Contents %@:",[objectSummary key]);
       //get last modified date of file by using meta data
    S3GetObjectMetadataRequest *getMetadataRequest = [[S3GetObjectMetadataRequest alloc] initWithKey:[objectSummary key] withBucket:@"bucket"];
    S3GetObjectMetadataResponse *getMetadataResponse = [self.s3 getObjectMetadata:getMetadataRequest];

}
}

我要求确切的语法(代码)向亚马逊s3发送bucket/folder请求

1 个答案:

答案 0 :(得分:4)

S3不是平的,它只有两个级别:桶和对象名称(它是内部桶)。铲斗始终只是铲斗。您正在尝试添加到您的存储桶名称,这会产生无效的存储桶名称。

前缀和分隔符参数为properties on S3ListObjectsRequest。我的Objective-C很生疏,但我认为你可以用以下方法设置这些属性:

getListObjectsRequest.prefix = @"my/prefix/";
getListObjectsRequest.delimiter = @"/";
在将请求提交给S3之前