2013-04-11 4 views
20

मैं किसी विशिष्ट S3 "निर्देशिका" में सभी फाइलों कोहरा का उपयोग कर सूचीबद्ध करते हैं में कोहरा का उपयोग कर एक S3 फ़ोल्डर में सभी फ़ाइलें सूचीबद्ध करने के लिए?कैसे रूबी

मुझे पता है कि एस 3 फ़ोल्डरों की फ़ाइलों की दुकान नहीं है, लेकिन मैं विशिष्ट "फ़ोल्डर" करने के लिए बाल्टी में पूरी सूची को पुन: प्राप्त करने के बजाय लौटाई गई फ़ाइलों को सीमित करने के लिए एक तरह से की जरूरत है।

उत्तर

36

directory.get पद्धति पर prefix विकल्प का उपयोग करें। उदाहरण:

def get_files(path, options) 
    connection = Fog::Storage.new(
    provider: 'AWS', 
    aws_access_key_id: options[:key], 
    aws_secret_access_key: options[:secret] 
) 
    connection.directories.get(options[:bucket], prefix: path).files.map do |file| 
    file.key 
    end 
end 
+1

शायद यह ध्यान देने योग्य है कि 'उपसर्ग' _actually_ प्रत्यय है, कम से कम संरचनात्मक रूप से बोल रहा है। यदि आपके नेस्टेड बाल्टी का मार्ग 'foo/bar' है, तो आपकी विधि कॉल होगी: '.get ('foo', उपसर्ग: 'बार')'। अगर आप बाल्टी नाम के रास्ते का हिस्सा होने के रूप में नहीं लगता कि – pdoherty926

+0

pdoherty926 के नोट थोड़ा भ्रामक है। – Amir

+1

यहाँ एक बढ़त मामले कि बुला '.map' सभी वापस नहीं होगा, लेकिन केवल एक पृष्ठ के रूप में एडब्ल्यूएस API द्वारा दिए है। कॉलिंग। फ़ाइलों पर प्रत्येक फॉग को मेमोरी खपत का प्रबंधन करने देगा क्योंकि फाइलों में से बहुत कुछ हो सकता है। – rposborne