2012-02-17 29 views
12

'DA TÜM dosya adlarını listeleme AWS IOS SDK kullanıyorum ve tüm dosyaları bir FOLDER içinde listelemeye çalışıyorum.Amazon AWS IOS SDK: FOLDER

Bu kod, bir KOVA tüm dosyaları vb listelemek için çalışır: Bir bucketName adı geçmesi Yani eğer

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

} 

, bu çalışır. Ben denemek ve bucketName/foldername geçirirseniz Ancak "Ben bir hata mesajı alıyorum. Bu kod kova ve yolu kombinasyonlarının kombinasyonunu gibi görünmüyor.

herhangi bir fikir takdir.

cevap

21

Amazon S3 bir" düz" dosya sistemi, bunu anlamı fiziksel klasörler yoktur. 'klasörler' bildiğiniz gibi sadece dosya isimlerine eklenen önekleri edilir.

sen isteğinize prefix özelliğini ayarlamanız gerekir

(documentation bakınız) Örneğin, aşağıdaki dosya kümeleri verildi:

folderName1/fileNameA.txt
folderName1/fileNameB.txt
folderName2/folderName3/fileNameC.txt Eğer / ile folderName1 ve senin delimiter ile prefix ayarlarsanız

, sadece almalısınız ilk iki giriş

Son fakat en az değil, ayrılmak senin bucketName sadece kova adı :) S3 Developer Guide de

diğer bilgiler ile.

+0

Fantastik. Teşekkürler Viccari – Jeremy

+6

Aslında bunun çalışması için önekini "folderName1 /" olarak ayarlamanız gerekiyor. Önceliği çalışmak için sınırlayıcıyı içermesi gerektiğini belgeyi okumadan önce bana bu kadar açık değildi ... – vdaubry

+1

Dikkat edilmesi gereken başka bir nokta: Sonuç kümesi 1000'de kısaltıldı. IsTruncated işaretini kontrol edin ve ardışık istekleri çalıştırın. Elde edilen son nesneyi belirtmek için bir işaretleyici ile. – Stavash