Amazon AWS IOS SDK: как составить список ВСЕХ имен файлов в FOLDER - PullRequest
13 голосов
/ 17 февраля 2012

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

Этот код работает для перечисления всех файлов и т. Д. В ведре:

-(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 ", я получаю сообщение об ошибке. Похоже, этот код не похож на комбинацию комбинаций путей и папок.

Любые идеи приветствуются.

1 Ответ

22 голосов
/ 17 февраля 2012

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

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...