0
Amazon documentationを読んだあと、Amazon S3バケットから特定のパスにフォルダ名をリストする方法が見つからなかったので、私は自分自身の質問に答えてStackOverflowを調べました。 私はそれをここに投稿し、それがまた:)他の人を助けるObjective CのAmazon S3バケットから特定のパスにあるフォルダを一覧表示するにはどうすればよいですか?
Amazon documentationを読んだあと、Amazon S3バケットから特定のパスにフォルダ名をリストする方法が見つからなかったので、私は自分自身の質問に答えてStackOverflowを調べました。 私はそれをここに投稿し、それがまた:)他の人を助けるObjective CのAmazon S3バケットから特定のパスにあるフォルダを一覧表示するにはどうすればよいですか?
そして、ここに私のコードであることを願っています:
// pass path as: @"backup/"
- (void)listAmazonFoldersAtPath:(NSString *)path
completion:(void (^)(BOOL success, NSMutableArray *filesArray))completionBlock
{
NSMutableArray *collection = [[NSMutableArray alloc] init];
AWSS3 *s3 = [AWSS3 defaultS3];
AWSS3ListObjectsRequest *listObjectsRequest = [AWSS3ListObjectsRequest new];
listObjectsRequest.prefix = path;
listObjectsRequest.delimiter = @"/";
listObjectsRequest.bucket = kAmazonS3Bucket;
[[s3 listObjects:listObjectsRequest] continueWithBlock:^id(AWSTask *task) {
if (task.error) {
NSLog(@"listObjects failed: [%@]", task.error);
completionBlock(NO, collection);
} else {
AWSS3ListObjectsOutput *listObjectsOutput = task.result;
for (AWSS3CommonPrefix *s3ObjectPrefix in listObjectsOutput.commonPrefixes) {
if(s3ObjectPrefix.prefix && s3ObjectPrefix.prefix.length > 0){
NSString *fileName = [[s3ObjectPrefix.prefix componentsSeparatedByString:@"/"] lastObject];
if (fileName && fileName.length > 0) {
[collection addObject:s3ObjectPrefix.prefix];
}
}
}
completionBlock(YES, collection);
NSLog(@"Current folders: %@", collection);
}
return nil;
}];
}
私はそれが他人を助けることを願っています。
注:また、サブフォルダの一覧を表示したい場合は行をコメントすること自由に感じなさい:
listObjectsRequest.delimiter = @"/";