Amazon AWS IOS SDK: cómo enumerar TODOS los nombres de archivo en una CARPETA

Estoy usando AWS IOS SDK e bash listar todos los archivos en una CARPETA.

Este código funciona para enumerar todos los archivos, etc. en un 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); } } 

Entonces, si paso un nombre de cubo, esto funciona. Sin embargo, si bash pasar el nombre del cubo / el nombre de la carpeta “aparece un mensaje de error. No parece que a este código le guste la combinación de combinaciones de ruta de contenedor y carpeta.

Cualquier idea apreciada.

Amazon S3 es un sistema de archivos “plano”, lo que significa que no tiene carpetas físicas. Las “carpetas” como usted sabe son simplemente prefijos añadidos a los nombres de archivo.

Debe configurar la propiedad de prefix a su solicitud (consulte la documentación )

Por ejemplo, dado el siguiente conjunto de archivos:

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

Si establece prefix con folderName1 , y su delimiter con / , debe obtener solo las dos primeras entradas.

Por último, pero no menos importante, deja tu nombre de cubo solo con el nombre del cubo 🙂

Más información en la S3 Developer Guide .