Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在目标C中,如何列出AmazonS3存储桶中特定路径上的文件夹?_Ios_Objective C_Amazon Web Services_Amazon S3 - Fatal编程技术网

Ios 在目标C中,如何列出AmazonS3存储桶中特定路径上的文件夹?

Ios 在目标C中,如何列出AmazonS3存储桶中特定路径上的文件夹?,ios,objective-c,amazon-web-services,amazon-s3,Ios,Objective C,Amazon Web Services,Amazon S3,在阅读了Amazon之后,我似乎没有找到如何在Amazon S3存储桶中的特定路径上列出文件夹名称,我也环顾了StackOverflow,但没有幸运地回答我自己的问题。 我将把它贴在这里,希望它也能帮助其他人:)这是我的代码: // pass path as: @"backup/" - (void)listAmazonFoldersAtPath:(NSString *)path completion:(void (^)(BOOL success, NSM

在阅读了Amazon之后,我似乎没有找到如何在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 = @"/";
这是我的代码:

// 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 = @"/";