我想上傳(大)隨機內容到HTTP端點。我創建它,發送它,它永遠不會再使用。所以我想跳過將它保存在臨時文件中,並使用{ 'file':open() }
,因爲我還需要使用form-urlencoded(而不是multipart)。
我正在使用pycurl及其READFUNCTION選項,但我不想依賴於pycurl。urllib2向上遊寫入
是否可以通過urllib2來實現?
我有這樣的代碼:
def upload():
url = 'http://localhost:9999/'
values = {'name' : 'Michael Foord',
'location' : 'Northampton',
'language' : open(file).read() }
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
the_page = response.read()
但因爲它的立場,當值定義整個文件將被讀取。
因此,如果文件是1Gb的大小,這不會工作得很好(除非我誤解了它的工作原理)。另外,我寧願不必創建隨機填充的1Gb文件。
好吧,我可以繼承StringIO的丹尼爾提到的和讀取生成隨機數據(),但我怎麼做的urllib2要求閱讀()塊而上傳而不是一次將所有內容都放在內存中?
在試圖更具體,我真正喜歡的是在Java中類似urlConnectionInstance.getOutputStream()
,我可以再寫入到。或者某種方式告訴的urllib2而它實際上是上載流傾銷數據從我自己的流中讀取..
Daniel與Daniel建議一起,這正是我所期待的。即使我在問題中指定了_urllib2_,整個問題就是使用標準庫,而不是_urllib2_專門(我的壞)..謝謝! – 2012-03-05 16:20:39