我正在编写一个python模块来将文件上传到服务器上,我可以上传大小为500MB的文件,但是当我尝试上传1 1gb的文件时,上传失败了,如果我使用像cURL这样的东西,它不会失败。我在谷歌上搜索了如何使用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,老实说,我不知道如何运行它。我试着根据函数名猜测来运行它,但是不起作用。
发布于 2012-05-25 00:00:35
有问题的脚本不是很智能,它在内存中构建POST主体。
因此,要发布一个1 1GB的文件,您需要1 1GB的内存来保存数据,加上HTTP头、边界、python和代码本身。
您必须修改脚本以使用mmap,在将包装在mmap.mmap值中的文件传递给request.add_data之前,首先在临时文件中构造整个主体。
有关如何实现这一点的提示,请参阅Python: HTTP Post a large file with streaming。
https://stackoverflow.com/questions/10740436
复制相似问题