zoukankan      html  css  js  c++  java
  • HttpClient 上传/下载文件计算文件传输进度

     1.使用ProgressMessageHandler 获取进度

    using namespace System.Net.Http;
    
    
    
    HttpClientHandler hand = new HttpClientHandler();
    ProgressMessageHandler processMessageHander = new ProgressMessageHandler(hand);
    HttpClient localHttpClient = new HttpClient(processMessageHander);
    
    
    
    processMessageHander.HttpSendProgress += (sender, e2) =>
    {
        int num = e2.ProgressPercentage; //you can use HttpProgressEventArgs e 
        worker.ReportProgress(num);
    };

    
    

      var resp = await localHttpClient.SendAsync(httpRequestMessage);
      Stream stream = await resp.Content.ReadAsStreamAsync();

     2. 在已知要下载的文件大小的情况下,可以计算获取进度

    var resp = await _client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
    using (Stream stream = await resp.Content.ReadAsStreamAsync(),
            fs = new FileStream(downloadPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite, 10240, true))
    {
        var totalRead = 0L;
        var buffer = new byte[10240];
        var isMoreToRead = true;
        do
        {
            if (worker.CancellationPending)
            {
                e.Cancel = true;
                return false;
            }
    
            var read = await stream.ReadAsync(buffer, 0, buffer.Length);
            if (read == 0)
            {
                isMoreToRead = false;
            }
            else
            {
                await fs.WriteAsync(buffer, 0, read);
                totalRead += read;
               
                int percentComplete = (int)((float)totalRead / (float)fileSize * 100);
                worker.ReportProgress(percentComplete);
            }
        }
        while (isMoreToRead);
    }
  • 相关阅读:
    104.Maximum Depth of Binary Tree
    103.Binary Tree Zigzag Level Order Traversal
    102.Binary Tree Level Order Traversal
    101.Symmetric Tree
    100.Same Tree
    99.Recover Binary Search Tree
    98.Validate Binary Search Tree
    97.Interleaving String
    static静态初始化块
    serialVersionUID作用
  • 原文地址:https://www.cnblogs.com/wswind/p/9177853.html
Copyright © 2011-2022 走看看