大文件上传失败

cyb*_*mon 1 python post file-upload multipartform-data

我正在编写一个python模块将POST文件发送到服务器,我可以上传大小高达500MB的文件但是当我尝试上传1gb文件时上传失败,如果我使用类似cURL的东西它赢了不要失败.我在google搜索如何multipart formdata使用python 上传后得到了代码,代码可以在这里找到.我刚编译并运行该代码,我得到的错误就是这个

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
Run Code Online (Sandbox Code Playgroud)

我是python的新手并且很难掌握它.我还碰到另一个程序在这里,我会说实话,我不知道该怎么办好了.我尝试通过基于函数名称的猜测来运行它,但这不起作用.

Mar*_*ers 5

有问题的脚本不是很聪明,并在内存中构建POST主体.

因此,要POST一个1GB的文件,你需要1GB的内存来保存这些数据,加上HTTP头,边界和python以及代码本身.

您必须重新编写脚本以使用mmap,首先在临时文件中构造整个主体,然后将包含在mmap.mmap值中的文件传递给它request.add_data.

请参阅Python:HTTP发布带有流媒体的大文件,以获取有关如何实现该目标的提示.