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 "Я получаю сообщение об ошибке. Этот код, похоже, не похож на комбинацию комбинаций ковша и папки.
Любые идеи оценены.
Ответы
Ответ 1
Amazon S3 - это "плоская" файловая система, то есть у него нет физических папок. "Папки", как вы знаете, являются просто префиксами, добавленными к именам файлов.
Вам нужно установить свойство prefix
для вашего запроса (см. документация)
Например, учитывая следующий набор файлов:
folderName1/fileNameA.txt
folderName1/fileNameB.txt
folderName2/folderName3/fileNameC.txt
Если вы установите prefix
с помощью folderName1
и delimiter
с /
, вы должны получить только первые две записи.
И последнее, но не менее важно оставить свой bucketName
только с именем ведра:)
Дополнительная информация в Руководство разработчика S3.