2012-02-17 9 views
12

Estoy utilizando AWS IOS SDK y tratando de enumerar todos los archivos en una CARPETA.Amazon AWS IOS SDK: cómo enumerar TODOS los nombres de archivo en una CARPETA

Este código funciona para listar todos los archivos, etc en un cubo:

-(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); 
} 

} 

Así que si paso un nombre bucketName, esto funciona. Sin embargo, si lo intento y paso bucketName/nomCarpeta "Me aparece un mensaje de error. No parece este código para recibir la combinación de cubo y la ruta de carpeta combinaciones.

Cualquier idea apreciados.

Respuesta

21

Amazon S3 es un" plana" sistema de archivos, lo que significa que no tiene carpetas físicas. 'carpetas' como saben son simplemente prefijos añade a los nombres de archivo.

es necesario establecer la propiedad prefix a su solicitud (ver el documentation)

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 /, usted debe obtener sólo el primeras dos entradas.

Por último, pero no menos importante, salir de su bucketName sólo con el nombre de depósito :)

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

+0

Fantástico. Gracias Viccari – Jeremy

+6

En realidad, para que esto funcione, debe establecer el prefijo "folderName1 /". No era tan obvio para mí antes de leer el documento que el prefijo debe incluir el delimitador para funcionar ... – vdaubry

+1

Otra cosa a tener en cuenta: El conjunto de resultados se trunca en 1000. Compruebe el indicador isTruncated y ejecute solicitudes consecutivas con un marcador para indicar el último objeto obtenido. – Stavash

Cuestiones relacionadas