好的,我看到this和this和documentation告诉亚马逊是平面文件系统,要创建/获取/设置文件夹,必须使用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
请求
答案 0 :(得分:4)
S3不是平的,它只有两个级别:桶和对象名称(它是内部桶)。铲斗始终只是铲斗。您正在尝试添加到您的存储桶名称,这会产生无效的存储桶名称。
前缀和分隔符参数为properties on S3ListObjectsRequest。我的Objective-C很生疏,但我认为你可以用以下方法设置这些属性:
getListObjectsRequest.prefix = @"my/prefix/";
getListObjectsRequest.delimiter = @"/";
在将请求提交给S3之前。