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);
    }
  • 相关阅读:
    内网穿透教程
    深入浅出 TCP/IP 协议栈
    STM32CUBEMX配置RTC闹钟
    RT-Thread STM32 系列 BSP 制作教程
    RT-Thread 在stm小内存系列产品的nano+msh完整移植教程
    C语言字符串与数字相互转换
    SD卡 TF卡 接口引脚定义
    定位数据格式
    安信可ESP-12F连接阿里云教程
    电脑使用网络调试助手连接阿里云步骤
  • 原文地址:https://www.cnblogs.com/wswind/p/9177853.html
Copyright © 2011-2022 走看看