我正在編寫一個python模塊來POST文件到服務器的過程中,我可以上傳大小高達500MB的文件,但是當我嘗試上傳1GB文件時上傳失敗,如果我是使用類似cURL的東西它不會失敗。我在google搜索後得到了使用python上傳multipart formdata
的代碼,代碼可以找到here。我剛剛編譯並運行該代碼,我得到的錯誤是這樣的大文件上傳失敗
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
opener.open("http://127.0.0.1/test_server/upload",params)
File "C:\Python27\lib\urllib2.py", line 392, in open
req = meth(req)
File "C:\Python27\MultipartPostHandler.py", line 35, in http_request
boundary, data = self.multipart_encode(v_vars, v_files)
File "C:\Python27\MultipartPostHandler.py", line 63, in multipart_encode
buffer += '\r\n' + fd.read() + '\r\n'
MemoryError
我是新來的python,很難把握它。我也遇到了另一個程序here,老實說我不知道如何運行它。我試圖通過基於函數名稱的猜測來運行它,但那不起作用。
也許我誤解了一些東西,但如果服務器的限制是500兆字節,1 GB的上傳應該會失敗。 – kevin628
我沒有設置任何限制,就像我說我可以使用cURL上傳1GB文件。 – cyberbemon
@cyberbemon:回溯顯示代碼試圖在內存中加載整個文件('fd.read()')。要麼爲流程增加一個允許的內存量或者流內容(就像'curl'可能會這樣),請參閱http://stackoverflow.com/questions/2502596/python-http-post-a-large-file-with-streaming – jfs