ios - 如何在 Objective C 中列出 Amazon S3 存储桶中特定路径的文件夹?

标签 ios objective-c amazon-web-services amazon-s3

在我阅读亚马逊 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/

相关文章:

ios - SwiftUI,如何将 EnvironmnetObject Int 属性绑定(bind)到 TextField?

iphone - 自定义 UINavigationBar 背景

amazon-web-services - AWS Step Functions 和 Fargate 任务 : container runtime error does not cause pipeline to fail

c++ - 在 IOS 上打印漂亮的大数字 C++

amazon-web-services - 公共(public)查询和突变(无身份验证)

amazon-web-services - Amazon S3 和 Amazon EC2 实例有什么区别?

iphone - 如何只绘制文本的轮廓,而不绘制填充本身?

ios - Swift 中的流控制 - AVAudioPlayer

ios - Xcode 12 问题 - 找不到目标 'FrameworkName' 的模块 'arm64-apple-ios-simulator';找到 : x86_64-apple-ios-simulator, x86_64

objective-c - 项目中所有 IBOutlet、IBAction 连接的总结?