2011-03-07 52 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