Подтвердить что ты не робот

Amazon AWS IOS SDK: список всех имен файлов в папке FOLDER

Я использую AWS IOS SDK и пытаюсь перечислить все файлы в FOLDER.

Этот код работает, чтобы перечислить все файлы и т.д. в BUCKET:

-(void) s3DirectoryListing: (NSString *) bucketName {

    s3Client = [[AmazonS3Client alloc] initWithAccessKey:ACCESS_KEY withSecretKey:SECRET_KEY];

    @try {

        S3ListObjectsRequest *req = [[S3ListObjectsRequest alloc] initWithName:bucketName];

        S3ListObjectsResponse *resp = [s3Client listObjects:req];

        NSMutableArray* objectSummaries = resp.listObjectsResult.objectSummaries;  

        for (int x = 0; x < [objectSummaries count]; x++) {
            NSLog(@"objectSummaries: %@",[objectSummaries objectAtIndex:x]);
        }
    }
    @catch (NSException *exception) {
    NSLog(@"Cannot list S3 %@",exception);
}

}

Итак, если я передаю имя bucketName, это сработает. Однако, если я попытаюсь передать bucketName/folderName "Я получаю сообщение об ошибке. Этот код, похоже, не похож на комбинацию комбинаций ковша и папки.

Любые идеи оценены.

4b9b3361

Ответ 1

Amazon S3 - это "плоская" файловая система, то есть у него нет физических папок. "Папки", как вы знаете, являются просто префиксами, добавленными к именам файлов.

Вам нужно установить свойство prefix для вашего запроса (см. документация)

Например, учитывая следующий набор файлов:

folderName1/fileNameA.txt
folderName1/fileNameB.txt
folderName2/folderName3/fileNameC.txt

Если вы установите prefix с помощью folderName1 и delimiter с /, вы должны получить только первые две записи.

И последнее, но не менее важно оставить свой bucketName только с именем ведра:)

Дополнительная информация в Руководство разработчика S3.