在我阅读亚马逊 documentation 之后而且我似乎没有找到如何从我的 Amazon S3 存储桶中列出特定路径中的文件夹名称,我也在 StackOverflow 上环顾四周,但不幸的是我回答了我自己的问题。 我会把它贴在这里,希望它也能帮助其他人:)
最佳答案
这是我的代码:
// 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 = @"/";
关于ios - 如何在 Objective C 中列出 Amazon S3 存储桶中特定路径的文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38454387/