2013-12-23 60 views
6

我正在使用Dropbox API上傳塊中的文件。但是下面的代碼卡在uploader.upload_chunked()中。可能是什麼原因?使用Dropbox API上載塊

此外,有沒有什麼辦法知道背景中發生的事情,如上傳這些很多塊,仍然上傳,接收上傳的塊和其他信息所需的時間? 可以使用線程上傳這些塊,假設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) - > CHUNK_SIZE從默認更改爲100個字節
print'100 bytes of chunk sent' - > print語句包含

+0

當你說它被「卡住」,什麼做你意思是?你的意思是應用程序掛起?或者你有一些錯誤?或者是什麼?另外,'size'從哪裏來?這個片段不包括它的定義,所以推測它的'None',這看起來無效。 – smarx

+0

卡住,代碼不會超出代碼中提到的點。大小是任意數量的字節。我提到了1024個字節。 –

+1

這個文件真的很大嗎? 'size'應該是您上傳文件的大小。如果它實際上不是1024字節,則可能處於無限循環。 ('uploader.offset'可能總是小於'size')我不清楚你看到的行爲是否是無限循環。 (如果你在'uploader.upload_chunked()'下面添加了一個print語句,它會被執行嗎?多少次?) – smarx

回答

4

我有同樣的問題,所以我的Dropbox的developer forum 問他們建議upload_chunk(DropboxClient的成員函數,而不是一個在ChunkedUploader)能滿足我們的要求