2011-03-07 27 views
4

使用Dropnet(Dropbox API)。我可以上傳一個這樣的文件:使用DropBox API時的進度條

 DropNet.DropNetClient dc = new DropNet.DropNetClient("*************", "g86p9959v9tvg49"); 
     dc.Login("[email protected]", "********"); 
     byte[] rawData = File.ReadAllBytes("Ionic.Zip.dll"); 
     dc.UploadFile("Public", "Ionic.Zip.dll",rawData); 
     Console.WriteLine(dc.Account_Info().quota_info.quota/(1024*1024)); 

有沒有辦法讓這個進度條? It says here:

它的東西,你可以自己制定出 - 你知道文件 是多麼大,你知道你有多少送 或迄今收到,其餘爲基本 數學。 :)

如何確定已發送多少數據?請幫忙嗎?

感謝

編輯: 上傳方法返回 - DropNet.Models.DropNetResult.statuscode一個System.net.httpstatuscode對象。是這個嗎 ?我必須以某種方式使用這個東西來建立一個進度條嗎?

+0

您必須從'dc.UploadFile'或從服務器獲得反饋。這聽起來像是他們打算讓你在客戶端做到這一點;你需要深入'UploadFile'來查看是否有任何範圍來添加進度回調,或者更新其他線程可以(仔細地)讀取的共享變量或其他內容。 (順便說一下:是否沒有上傳流或從文件名API直接上傳?如果你有很多GB文件,讀取字節然後上傳將開始掙扎。) – Rup 2011-03-07 12:34:14

+0

謝謝,我仍然在探索api,看看是否有一個更好的方法 – 2011-03-07 12:42:21

+0

您的編輯:不,這太晚了 - 上傳將完成。您需要獲取實際的UploadFile操作,以便在進度信息返回時返回進度信息。如果它尚不支持這個,那麼你可能需要深入到實現本身,找到實際執行上傳的代碼並修改它以隨着它的發展返回進度。如果它是從一個字節數組上傳的,那麼你可能會鉤住它(例如,如果它是一個單獨的寫入,那麼將它切換到部分寫入的循環並在每個寫入之間回叫)。 – Rup 2011-03-07 12:47:47

回答

0

我不認爲有可能在git-hub上查看their source code,因爲沒有任何反饋。有一個UploadFileAsync()除了在完成時調用一個回調動作之外,它的參數與UploadFile()相同。您可以使用異步方法來顯示選取框樣式的進度條,並清理回調Action。

我不確定這是否可行,但您可以在上傳前捕獲quota_info並開始異步上傳並定期監控quota_info。如果在文件上傳時更新了quota_info,那麼您知道文件的大小以及文件的上傳量,您應該可以進行數學計算。

+0

檢查配額看起來很聰明,但卻是一種報告進度的錯誤方式,因爲可以從其他同步設備/ API使用者中同時添加/刪除文件。 – huseyint 2013-07-23 17:43:46