2019-8-31-dotnet-通过-HttpClient-下载文件同时报告进度的方法
2024-10-07 18:54:51
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);
}
最新文章
- Module-Zero之版本管理
- JS 拼接字符串数组
- Spring面向切面编程(AOP)
- jQuery 安装方法
- WEBUS2.0 In Action - 搜索操作指南 - (2)
- What is the Best Programming Language to Learn in 2014?
- Spring与Struts整合
- yarn环境的搭建
- POJ 1324 Holedox Moving 搜索
- iOS之图文混排
- 故障排查实战案例——某电器ERP系统日志暴增
- 【Java】Objects 源码学习
- Android开发学习之路--Android系统架构初探
- 为程序启用 守护进程-- supervisior
- 消息中间件系列三:使用RabbitMq原生Java客户端进行消息通信(消费者(接收方)自动确认模式、消费者(接收方)自行确认模式、生产者(发送方)确认模式)
- 删除GitHub或者GitLab 上的文件夹,git rm -r --ceched 文件夹名 ,提交commit,git push
- sql注入(一)
- 大数据技术之_08_Hive学习_05_Hive实战之谷粒影音(ETL+TopN)+常见错误及解决方案
- python爬虫从入门到放弃(一)——试用bs4, request爬百度股票
- Zookeeper学习之路 (二)集群搭建
热门文章
- [轉]Reverse a singly linked list
- pytest框架结构运行规则及命名方式
- wrong mechandise category
- vue组件库的基本开发步骤(源代码)
- 解决码云未配置公钥问题——fatal: Could not read from remote repository.
- Android消息处理:EventBus、BroadCast和Handler-优缺点比较
- postgresql like 中的转义
- android5.1 修改音量键绑定多媒体声音
- 查看crontab执行记录
- DELPHI 多线程(TThread类的实现)