我正在使用Python请求包上传一个大文件,我找不到任何方式来提供有关上传进度的数据.我已经看到了许多用于下载文件的进度表,但是这些对于文件上传不起作用.
理想的解决方案是某种回调方法,例如:
def progress(percent):
print percent
r = requests.post(URL, files={'f':hugeFileHandle}, callback=progress)
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助 :)
我有以下代码:
def application(env, start_response):
path = process(env)
fh = open(path,'r')
start_response('200 OK', [('Content-Type','application/octet-stream')])
return fbuffer(fh,10000)
def fbuffer(f, chunk_size):
'''Generator to buffer file chunks'''
while True:
chunk = f.read(chunk_size)
if not chunk: break
yield chunk
Run Code Online (Sandbox Code Playgroud)
我不确定它是对的,但是我在互联网上找到的信息碎片让我觉得它应该有效.基本上我想以块的形式流出一个文件,为此,我从我的应用程序函数传回一个生成器.然而,这只打印出标题,并没有实际发回任何数据,任何人都可以告诉我为什么这是?
或者,如果这是完全错误的,那么最好的方法是什么?我无法将整个文件缓冲在内存中,因为我将使用的文件可能是千兆字节.
第三个问题:一旦我输出文件,关闭文件的最佳方法是什么?在我发布的代码中,无论如何我都看不到实际关闭文件.
(我用uWSGI 1.2.4运行python 3.2.3)
不幸的是,我之前的问题因为是一个问题的"精确副本"而被关闭,而它绝对不是,特此再次.
它不是Python的重复:HTTP发布带有流的大文件
那个处理流式传输大文件; 我想将一个文件的任意块一个接一个地发送到同一个http连接.所以我有一个20 MB的文件,我想要做的是打开HTTP连接,然后发送1 MB,再发送1 MB等,直到它完成.使用相同的连接,服务器看到该连接上出现一个20 MB的块.
我也打算做一个Mmapping文件,但是当从stdin读取数据时这不起作用.主要针对第二种情况,我正在寻找这种逐个数据馈送.
老实说,我想知道它是否可以完成 - 如果没有,我想知道,那么可以关闭这个问题.但如果可以做到,怎么办呢?
我想通过 Python 中的 HTTPPost 方法发布巨大的 .ova 文件
**ResponseHeaders**
Pragma no-cache
Date Thu, 18 Jul 2013 11:17:13 GMT
Content-Encoding gzip
Vary Accept-Encoding
Server Apache-Coyote/1.1
Transfer-Encoding chunked
Content-Language en-US
Content-Type application/json;charset=UTF-8
Cache-Control no-cache, no-store, max-age=0
Expires Thu, 01 Jan 1970 00:00:00 GMT
**RequestHeaders**
Content-Type application/json
Accept application/json
xyzAPIVersion 1.0
X-Requested-With XMLHttpRequest
Run Code Online (Sandbox Code Playgroud)
如何通过 REST API 通过 HTTPPost 方法发送如此巨大的文件(500 MB)。
我正在编写一个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的新手并且很难掌握它.我还碰到另一个程序在这里,我会说实话,我不知道该怎么办好了.我尝试通过基于函数名称的猜测来运行它,但这不起作用.