2012-02-17 17 views
12

में सभी फ़ाइल नामों को कैसे सूचीबद्ध करें I AWS IOS SDK का उपयोग कर रहा हूं और फ़ोल्डर्स में सभी फ़ाइलों को सूचीबद्ध करने का प्रयास कर रहा हूं।अमेज़ॅन एडब्ल्यूएस आईओएस एसडीके: फ़ोल्डर

इस कोड को एक बाल्टी में सभी फाइलों आदि सूची काम करता है:

-(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 पारित "मैं एक त्रुटि संदेश मिलता है। इस कोड को बाल्टी और फ़ोल्डर पथ संयोजन के संयोजन पसंद करने के लिए प्रतीत नहीं होता।

कोई भी विचार की सराहना की।

उत्तर

21

अमेज़न S3 एक" फ्लैट फ़ोल्डर "फाइल सिस्टम, यह अर्थ शारीरिक फ़ोल्डरों नहीं है।" "जैसा कि आप जानते बस फ़ाइल नामों को जोड़ा गया उपसर्गों कर रहे हैं।

आपको अपने अनुरोध की prefix गुण सेट करने की जरूरत है (देखें documentation)

उदाहरण के लिए, फ़ाइलों का निम्नलिखित सेट दिया गया:

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

आप folderName1, और अपने delimiter/ साथ साथ prefix सेट करते हैं, आप केवल मिलना चाहिए पहली दो प्रविष्टियां

अंतिम, लेकिन कम से कम, छोड़ अपने bucketName केवल बाल्टी नाम :) S3 Developer Guide पर

और जानकारी के साथ।

+0

शानदार। धन्यवाद विकारी – Jeremy

+6

असल में इस काम के लिए आपको उपसर्ग को "folderName1 /" पर सेट करना होगा। इस दस्तावेज़ को पढ़ने से पहले यह मेरे लिए इतना स्पष्ट नहीं था कि उपसर्ग में काम करने के लिए डिलीमीटर शामिल होना चाहिए ... – vdaubry

+1

एक और चीज देखने के लिए: परिणाम सेट 1000 पर छोटा कर दिया गया है। IsTruncated ध्वज की जांच करें और लगातार अनुरोध चलाएं प्राप्त अंतिम वस्तु को बताने के लिए एक मार्कर के साथ। – Stavash

संबंधित मुद्दे