प्रलेखन कहना नहीं है कि आप यह कर सकते हैं, लेकिन urllib2 में कोड (और httplib) के रूप में पढ़ने() विधि के साथ किसी भी वस्तु को स्वीकार करता है डेटा। तो एक खुली फ़ाइल का उपयोग कर चाल करना प्रतीत होता है।
आपको सामग्री-लंबाई शीर्षलेख स्वयं सेट करने की आवश्यकता होगी। यदि यह सेट नहीं है, तो urllib2 डेटा पर लेन() को कॉल करेगा, जो फ़ाइल ऑब्जेक्ट्स का समर्थन नहीं करते हैं।
import os.path
import urllib2
data = open(filename, 'r')
headers = { 'Content-Length' : os.path.getsize(filename) }
response = urllib2.urlopen(url, data, headers)
यह प्रासंगिक कोड है जो आपके द्वारा प्रदान किए जाने वाले डेटा को संभालता है। यह अजगर 2.7 में httplib.py
में HTTPConnection
वर्ग से है:
def send(self, data):
"""Send `data' to the server."""
if self.sock is None:
if self.auto_open:
self.connect()
else:
raise NotConnected()
if self.debuglevel > 0:
print "send:", repr(data)
blocksize = 8192
if hasattr(data,'read') and not isinstance(data, array):
if self.debuglevel > 0: print "sendIng a read()able"
datablock = data.read(blocksize)
while datablock:
self.sock.sendall(datablock)
datablock = data.read(blocksize)
else:
self.sock.sendall(data)
स्रोत
2015-06-12 19:16:16
संबंधित
कर सकते हैं: [WSGI फ़ाइल एक जनरेटर के साथ स्ट्रीमिंग] (http : //stackoverflow.com/questions/11811404/) –
संबंधित: http://stackoverflow.com/questions/2502596/python-http-post-a-large-file-with- स्ट्रीमिंग –