带有Python请求的分块上传

时间:2019-09-05 16:58:06

标签: python upload python-requests

我想使用Python请求包以给定大小的块将文件上传到WebDav服务器。

我找到了一个示例(https://gist.github.com/nbari/7335384),该示例应该可以执行我想要的操作。

主要部分是一个生成块的函数:

def read_in_chunks(file_object, chunk_size=65536):
    while True:
        data = file_object.read(chunk_size)
        if not data:
            break
        yield data

和迭代的上传:

content_size = os.stat(content_path).st_size
f = open(content_path)
index = 0
headers = {}

for chunk in read_in_chunks(f):
    offset = index + len(chunk)
    headers['Content-Type'] = 'application/octet-stream'
    headers['Content-length'] = str(content_size)
    headers['Content-Range'] = 'bytes %s-%s/%s' % (index, offset, content_size)
    index = offset
    try:
        r = requests.put(url, data=chunk, headers=headers)
        print "r: %s, Content-Range: %s" % (r, headers['Content-Range'])
    except Exception, e:
        print e

要指定content_pathurl

但是,我收到错误代码“ 400 Bad Request”,并且文件未上传。我在文档中找不到任何提示。

0 个答案:

没有答案