我希望在文件上传到WebService时添加进度条。
我刚刚开始研究winforms应用程序,我认为它使用 WCF 来允许客户端将文档上传到我们的公司存储库。
我使用UploadService,在其中传递由元数据和文件组成的多部分流。我已经负责建立这个部分。
我不太确定如何勾选"某些东西"到流,所以我可以跟踪它上传
我看到有些人使用后台工作程序异步跟踪任务的进度,但似乎无法找到某人执行此操作来跟踪上传到WebService的文件的示例。我似乎只找到一个跟踪正在内存中构建的流的示例。
感谢任何建议/帮助。
谢谢!
编辑:据我所知,上传流的方法只需要一个流,没有选项可以传递流的大小,或者一次读取多少字节。
答案 0 :(得分:0)
假设您知道文件的大小(如果它是您最有可能的本地文件)。
您可能会将其作为流从磁盘上访问,然后将其复制到上传流中。
如果您以块(例如缓冲区)进行操作,那么您可以计算进度:
var totalNumberOfChunks = (fileSize / chunkSize);
for(var chunk = 0; chunk < totalNumberOfChunks; chunk++)
{
// assuming you have the chunk byte array
// and have already sent it up to the server
var progress = ((double)chunk / totalNumberOfChunks) * 100;
// do something to surface this progress
}
基本上你只是想弄清楚你发送了多少单独的数据块,然后当你发送它们时,计算你走了多远并以某种方式表现出进展。
当然,有时可以为您完成此操作:Getting the upload progress during file upload using Webclient.Uploadfile