2012-02-17 23 views
12

Tôi đang sử dụng SDK AWS IOS và cố liệt kê tất cả các tệp trong FOLDER.Amazon AWS IOS SDK: Cách liệt kê TẤT CẢ tên tệp trong FOLDER

Mã này hoạt động để liệt kê tất cả các tập tin vv trong một cái xô:

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

} 

Vì vậy, nếu tôi vượt qua một tên bucketName, công trình này. Tuy nhiên nếu tôi cố gắng và vượt qua bucketName/folderName "Tôi nhận được một thông báo lỗi. Mã này dường như không thích sự kết hợp của xô và đường dẫn thư mục kết hợp.

Bất kỳ ý tưởng đánh giá cao.

Trả lời

21

Amazon S3 là một" phẳng" hệ thống tập tin, có nghĩa là nó không có thư mục vật lý. 'Folders' như bạn đã biết chỉ đơn giản là tiền tố thêm vào tên tập tin.

bạn cần phải đặt prefix tài sản để yêu cầu của bạn (xem documentation)

Ví dụ: được cung cấp tập hợp các tệp sau:

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

Nếu bạn đặt prefix với folderName1, và delimiter của bạn với /, bạn sẽ nhận được chỉ hai mục đầu tiên.

Cuối cùng nhưng không kém, rời bucketName của bạn chỉ với tên xô :)

Thông tin thêm tại S3 Developer Guide.

+0

Tuyệt vời. Cảm ơn Viccari – Jeremy

+6

Trên thực tế để làm việc này, bạn phải đặt tiền tố là "folderName1 /". Nó không quá rõ ràng với tôi trước khi đọc tài liệu mà tiền tố phải bao gồm dấu phân cách để làm việc ... – vdaubry

+1

Một điều cần lưu ý: Tập kết quả bị cắt ngắn ở 1000. Kiểm tra cờ isTruncated và chạy các yêu cầu liên tiếp với một điểm đánh dấu cho biết đối tượng cuối cùng thu được. – Stavash

Các vấn đề liên quan