我正在尝试构建一个能够在python中通过chunk下载文件块的python应用程序,我在整个应用程序中使用包dropbox-python
,但是在按块下载文件块的情况下,包不处理此案。
所以我尝试使用dropbox.rest.RESTClient.request
发出请求,并使用headers参数传递Range。
我正在使用dropbox.client.DropboxClient.request
来检索我在Oauth1.0中构建请求所需的所有信息。
所以我最后得到的是以下网址:https://api-content.dropbox.com/1/files/dropbox/bigfile?oauth_token=(token)&oauth_consumer_key=(consumer_key)
当我尝试发送请求时,我获得了401 Unauthorized。 你知道我做错了吗?
def download_big_file(self, filename, outDir=None):
fname = filename
metadata = self.client.metadata(fname)
size = metadata['bytes']
url, params, headers = self.client.request("/files/dropbox/"+filename)
url = url.replace("api", "api-content")
url = url + "?oauth_token=" + params['oauth_token'] + "&oauth_consumer_key=" + params['oauth_consumer_key']
if outDir:
dst = os.path.join(outDir, fname)
else:
dst = fname
endchunk = self.chunked_file_size
with open(fname, "wb") as fh:
try:
while endchunk < size:
fh.write(dropbox.rest.RESTClient.request('GET', url, headers={"Range": "bytes="+str(endchunk-self.chunked_file_size)+"-"+str(endchunk)}))
endchunk += self.chunked_file_size
except Exception, e:
print "ERROR: ", e
return dst, metadata
答案 0 :(得分:2)
是否有名为dropbox-python
的图书馆?或者这只是dropbox
,official library from Dropbox?
如果它是官方库,我认为这段代码应该可以使用(未经测试):
url, params, headers = self.client.request(path, {}, method='GET', content_server=True)
headers['Range'] = 'bytes=' + ...
f = self.client.rest_client.request("GET", url, headers=headers, raw_response=True)