使用Dropbox API上传文件分块

6
我正在使用Dropbox API以块的形式上传文件。但是以下代码在uploader.upload_chunked()处卡住了。可能的原因是什么?
此外,是否有办法知道后台正在发生什么,例如已上传这么多块,仍在上传,接收已上传块所需的时间和其他信息?可以使用线程来上传这些块吗?假设API采取措施按正确顺序组装块,还是我们必须负责有序组装?
import dropbox
size = 941   
access_token = 'xxx'
client = dropbox.client.DropboxClient(access_token)
to_upload_file = open('dummy.txt','r')

uploader = client.get_chunked_uploader(to_upload_file,size)

print 'uploading ', size
while uploader.offset < size :
        try:
                upload = uploader.upload_chunked(chunk_size=100)  
                print '100 bytes of chunk sent.'
        except dropbox.rest.ErrorResponse,e:
                print 'something went wrong'      
uploader.finish('/dummy.txt')

编辑
size = 941 -> 要上传的文件大小
upload=uploader.upload_chunked(chunk_size=100) -> 分块上传,分块大小更改为100字节
print'100 bytes of chunk sent' -> 包含打印语句


卡住了,指的是代码在特定点停止执行。size是任意字节数。我提到了1024字节。 - yudi
1
文件真的那么大吗?size 应该是您正在上传的文件的大小。如果它实际上不是 1024 字节,您可能会进入无限循环。(uploader.offset 可能始终小于 size)我不确定您看到的行为是否是无限循环。(如果在 uploader.upload_chunked() 下添加了一个打印语句,它会被执行吗?执行多少次?) - user94559
我添加了一个打印语句,但它从未被执行! - yudi
1
文件大小是否至少为1024字节? - user94559
好的,文件大小不是1024字节!文件大小应该等于上传的字节数!但是,即使在循环中添加了打印语句并将块大小设置为100字节,该语句仅会在上传完成后打印一次!有任何建议原因吗? - yudi
显示剩余2条评论
2个回答

4

我曾经遇到相同的问题,于是在dropbox的开发者论坛上提问。他们建议使用upload_chunk(DropboxClient的成员函数,而不是ChunkedUploader中的函数)可以满足我们的要求。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接