zoukankan      html  css  js  c++  java
  • 2019-8-31-dotnet-通过-HttpClient-下载文件同时报告进度的方法

    title author date CreateTime categories
    dotnet 通过 HttpClient 下载文件同时报告进度的方法
    lindexi
    2019-08-31 16:55:58 +0800
    2019-2-27 15:6:21 +0800
    dotnet

    本文告诉大家一个简单的方法通过 HttpClient 下载文件,同时报告下载进度

    通过 HttpClient 的 ContentLength 很多时候都可以拿到下载的内容的长度,通过 ReadAsync 可以返回当前读到的长度,将读取到的长度加起来就是已经下载的长度

    看起来很简单,于是直接给代码

           private static async Task DownloadFile(string url, FileInfo file)
            {
                var httpClient = new HttpClient();
                var response = await httpClient.GetAsync(url);
    
                try
                {
                    var n = response.Content.Headers.ContentLength;
                    var stream = await response.Content.ReadAsStreamAsync();
                    using(var fileStream = file.Create())
                    using (stream)
                    {
                        byte[] buffer = new byte[1024];
                        var readLength = 0;
                        int length;
                        while ((length = await stream.ReadAsync(buffer, 0, buffer.Length)) != 0)
                        {
                            readLength += length;
    
                            Console.WriteLine("下载进度" + ((double)readLength) / n * 100);
    
                            // 写入到文件
                            fileStream.Write(buffer, 0, length);
                        }
                    }
                
                }
                catch (Exception e)
                {
                }
            }

    如果不是需要获取进度,那么最简单的方法是

                    var stream = await response.Content.ReadAsStreamAsync();
                    using(var fileStream = file.Create())
                    using (stream)
                    {
                        await stream.CopyToAsync(fileStream);
                    }
  • 相关阅读:
    Oracle SQL FAQ
    miniasp(no encode)
    请看用javascript设置和读取cookie的简单例子
    asp流下载(Stream)
    (企业公司)网站开发方案
    asp发消息并代多个附件上传(多对多关系)
    tabpage1
    crystal report (asp调用水晶报表实例)
    上海万千文化传播有限公司(网站项目策划书)
    访问和更新Cookies集合
  • 原文地址:https://www.cnblogs.com/lindexi/p/12085711.html
Copyright © 2011-2022 走看看