2013-09-23 11 views
6
import boto 
conn = boto.connect_s3('', '') 

mybucket = conn.get_bucket('data_report_321') 

का उपयोग कर फ़ाइल अपलोड करें मैं निम्नलिखित कोड का उपयोग कर एक बाल्टी से फ़ाइल डाउनलोड कर सकता हूं।बोटो

for b in mybucket: 
    print b.name 
    b.get_contents_to_filename('0000_part_00', headers=None, cb=None, num_cb=10, torrent=False, version_id=None, res_download_handler=None, response_headers=None) 

लेकिन मैं एक फ़ाइल अपलोड करने में सक्षम नहीं हूँ। मुझे एक त्रुटि मिलती है: विशेषताएँ: 'str' ऑब्जेक्ट में कोई विशेषता नहीं है '

send_file और set_contents फ़ंक्शन अपेक्षित के रूप में काम कर रहे हैं।

for b in mybucket: 
    b.send_file('mytest.txt', headers=None, cb=None, num_cb=10, query_args=None, chunked_transfer=False, size=None) 
    b.set_contents_from_file('mytest.txt', headers=None, replace=True, cb=None, num_cb=10, policy=None, md5=None, reduced_redundancy=False, query_args=None, encrypt_key=False, size=None, rewind=False) 

मैं स्थानीय सर्वर की वर्तमान निर्देशिका से बीओटी का उपयोग कर एस 3 बाल्टी में फ़ाइल कैसे अपलोड करूं?


अद्यतन: मैं पहली बार set_contents_from_filename समारोह कॉल करने से पहले अपलोड की गई फ़ाइल के प्रमुख (फ़ाइल का नाम) की घोषणा करने की जरूरत है।

k = boto.s3.key.Key(mybucket) 
k.key = 'uploaded_file.txt' 
k.set_contents_from_filename("myteswt.txt") 

उत्तर

9

दोनों send_file और set_contents_from_file पहला तर्क के लिए एक File वस्तु ले। यदि आप एक स्ट्रिंग पास करना चाहते हैं तो आपको set_contents_from_filename देखना चाहिए। https://github.com/TimelyToga/upload_s3

python upload_s3.py <filename> [key_to_upload_as] 

यह एक S3 बाल्टी आपके द्वारा निर्दिष्ट करने के लिए किसी भी फाइल अपलोड करेंगे:

+2

मुझे set_contents_from_filename के साथ कोई त्रुटि नहीं मिली है लेकिन फ़ाइल वास्तव में उस बाल्टी पर अपलोड नहीं की गई है। क्या मैं कुछ भूल रहा हूँ? – shantanuo

-2

आप इस उपयोगिता स्क्रिप्ट का उपयोग कर सकते हैं।

हालांकि, जब आप set_contents_from_file अपलोड कर रहे हैं तो एक पाइथन File ऑब्जेक्ट लेता है।

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