【问题标题】:How can I check the progress of a HttpWebRequest upload?如何检查 HttpWebRequest 上传的进度?
【发布时间】:2010-10-13 14:09:06
【问题描述】:

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

【问题讨论】:

标签: c# wpf httpwebrequest


【解决方案1】:

您可以在 HttpWebRequest 上使用异步模式 - 有一个工作示例(基于 MSDN 文档示例代码)here。简要说明:

这是一个小的 Win Forms 客户端 允许您下载单个文件 从服务器,使用 HTTP 或 FTP。它显示下载进度和 显示平均传输速率,以 千字节/秒。它还演示了如何 使用 HttpWebRequest 和 System.Net 中的 FtpWebRequest 类 进行文件下载。

【讨论】:

    【解决方案2】:

    只要您在调用 GetRequestStream 之前设置 HttpWebRequest.ContentLength 或 HttpWebRequest.SendChunked,您发送的数据将在每次调用 Stream.[Begin]Write 时发送到服务器。如果您建议将文件分成小块编写,您可以了解您的进度。

    【讨论】:

    • 实际上,即使你设置了 SendChunked,客户端也会缓存数据。我用一个 18M 的文件尝试了这个,它在几秒钟内全部发送,然后实际传输需要几分钟。
    【解决方案3】:

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

    HttpWebRequest 有类似的方法

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

    接受异步回调。

    【讨论】:

    • 谢谢你,但你能详细说明你将如何做到这一点。
    • 当请求完成时回调。回调没有任何进展(除了 100% ——这可能 不是 OP 问这个问题的原因)。这可能解释了否决票
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-29
    • 2014-02-17
    • 1970-01-01
    • 2012-12-12
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多