2

好的,我看到这个这个文档告诉亚马逊是平面文件系统,并且要创建/获取/设置文件夹,必须使用 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];

}
}

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

4

1 回答 1

4

S3 不是平面的,它只有两个层次:桶和对象名称(它在桶内是平面)。桶永远只是桶。您正在尝试添加到您的存储桶名称,这会产生无效的存储桶名称。

prefix 和 delimiter 参数是S3ListObjectsRequest 上的属性。我的 Objective-C 生锈了,但我认为你可以设置这些属性:

getListObjectsRequest.prefix = @"my/prefix/";
getListObjectsRequest.delimiter = @"/";

在向 S3 提交请求之前。

于 2013-03-07T16:34:10.577 回答