2010-10-13 44 views
2

我想知道如何检查文件上传/下载了多少?我正在使用HttpWebRequest如何检查HttpWebRequest上传的进度?

+0

那么你是否在写/读'HttpWebRequest'的输入/输出流时处理缓冲?通过缓冲,你有一个自然的迭代来增加进度。 – 2010-10-13 14:19:46

+0

我可能是错的,但所有的缓冲将只在客户端进展正确吗?不是我实际发送的数据。或者你有一些代码或链接让我看看你的意思?顺便说一句,我目前的代码看起来像http://codepad.org/gK16e0NU – 2010-10-14 10:00:16

+0

可能的重复[Silverlight 4 RC文件上传与上载进度:如何?](http://stackoverflow.com/questions/2529558/silverlight-4 -rc-file-upload-with-upload-progress-how-to) – 2012-07-22 10:36:37

回答

3

你可以做到这一点,你使用异步模式的HttpWebRequest - 有一个工作示例(根据MSDN文档示例代码)here。简要说明:

这里有一个小赢窗体客户端, 允许你从服务器下载一个文件 ,使用HTTP或FTP 。它显示下载进度,并且 显示平均传输速率,在 kb/sec。它还演示了如何使用HttpWebRequest和 在System.Net中的FtpWebRequest类到 做文件下载。

-2

您必须异步调用它才能更新上载/下载的进度。

HttpWebRequest的有像

public override IAsyncResult BeginGetResponse(AsyncCallback callback, object state); 
public override IAsyncResult BeginGetRequestStream(AsyncCallback callback, object state); 

方法接受异步回调。

+0

downvote ??做什么的??? – RameshVel 2010-10-13 14:22:59

+1

谢谢,但你能详细说明你将如何做到这一点。 – 2010-10-14 12:19:40

+2

回调是当请求完成时。通过回调没有进展(除了100% - 这可能*不*为什么OP问这个问题)。这可能会解释downvote – 2013-03-22 20:27:47

-1

只要你设置任何HttpWebRequest.ContentLength或HttpWebRequest.SendChunked调用GetRequestStream之前,你发送的数据将被发送到服务器与每个调用流。[开始]写。如果您以小块形式撰写文件,您可以了解您有多远。

+0

实际上,即使您设置SendChunked,客户端也会缓存数据。我用一个18M的文件试了这个,并在几秒钟内发送完毕,然后实际传输花费了几分钟。 – Charles 2014-09-13 19:26:50