2008-09-29 16 views
7

से POST का उपयोग करके फ़ाइल भेजें यह Send file using POST from a Python script का लगभग डुप्लिकेट है, लेकिन मैं एक चेतावनी जोड़ना चाहता हूं: मुझे कुछ ऐसा चाहिए जो फ़ील्ड और संलग्न फाइलों के एन्कोडिंग को सही तरीके से संभाल ले। जब आप यूनिकोड तारों को मिश्रण में गैर-एसीआई अक्षरों वाले फेंकते हैं तो समाधान मैं उड़ने में सक्षम हूं। इसके अलावा, अधिकांश समाधान 7-बिट साफ रखने के लिए बेस-एन्कोड डेटा बेस नहीं करते हैं।पाइथन लिपि

उत्तर

5

सबसे अच्छी बात यह है कि मैं इसे स्वयं एन्कोड करना चाहता हूं। इस subroutine के बारे में कैसे?

from urllib2 import Request, urlopen 
from binascii import b2a_base64 

def b64open(url, postdata): 
    req = Request(url, b2a_base64(postdata), headers={'Content-Transfer-Encoding': 'base64'}) 
    return urlopen(req) 

conn = b64open("http://www.whatever.com/script.cgi", u"Liberté Égalité Fraternité") 
# returns a file-like object 

(ठीक है, तो इस कोड को सिर्फ बाद डेटा भेजता है। लेकिन तुम जाहिरा तौर पर, बहुखण्डीय एन्कोड डेटा चाहते हैं के रूप में यदि आप एक "फाइल अपलोड करें" बटन क्लिक किया, है ना? ठीक है, इसके बारे में एक बिल्कुल स्पष्ट संयोजन क्या मेरे पास आपके द्वारा लिंक किए गए प्रश्न से उत्तर और उत्तर हैं।)

1

PyCURL पायथन से कर्ल को एक इंटरफेस प्रदान करता है।

http://curl.haxx.se/libcurl/python/

कर्ल आप सभी की जरूरत करेंगे। यह बाइनरी फ़ाइलों को ठीक से स्थानांतरित कर सकता है, और कई एन्कोडिंग का समर्थन करता है। हालांकि, आपको यह सुनिश्चित करना होगा कि फ़ाइलों को पोस्ट करते समय कस्टम हेडर एन्कोडिंग कस्टम हेडर के रूप में हो।

http://curl.haxx.se/docs/httpscripting.html (धारा 4.3)

कर्ल के साथ

(या किसी अन्य HTTP क्लाइंट) आप सामग्री एन्कोडिंग सेट करने के लिए हो सकता है:

विशेष रूप से, आप एक 'फाइल अपलोड' शैली पोस्ट करने की जरूरत है हो सकता है:

सामग्री-प्रकार: टेक्स्ट/एचटीएमएल; charset = UTF-8

ही, ध्यान रखें कि अनुरोध हेडर ascii होना चाहिए हो, और इस यूआरएल (ताकि करें कि आपने अपनी संभवतः यूनिकोड यूआरएल बच सकते हैं। यूनिकोड HTTP हेडर के लिए निकल जाता हैं) भी शामिल है यह हाल ही में अजगर में तय किया गया था:

http://bugs.python.org/issue3300

मुझे आशा है कि इस मदद करता है, विषय पर अधिक जानकारी, आपके डिफ़ॉल्ट चरित्र अपने सर्वर पर सेट और सेट करने सहित वहाँ है, आदि

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