C#下载文件:WebClient
这两天在试着做自动升级程序,用到了WebClient
简单把我的过程讲讲
为了配合显示进度
先画个2个PrograssBar
一个命名为progbar_single一个为progbar_total
然后在写一个下载文件方法
private void doDownload(string fileName) {lbl_singleFileName.Text = "正在下载:"+fileName;//label框提示下载文件progbar_single.Value=0;//初始化单个文件下载条WebClient ws = new WebClient();ws.DownloadProgressChanged += new DownloadProgressChangedEventHandler(OnDownloadProgressChanged);//绑定下载事件,以便于显示当前进度ws.DownloadFileCompleted += new AsyncCompletedEventHandler(OnDownloadFileCompleted);//绑定下载完成事件,以便于计算总进度ws.DownloadFileAsync(new Uri(upapp.UpdateURL + fileName), Path.Combine(AppDomain.CurrentDomain.BaseDirectory+"Temp", fileName)); //调用DownloadFileAsync方法下载文件//DownloadFileAsync有2个重载,另一个我没搞明白最后一个参数该传什么,有哪位朋友知道的,请留言告诉我谢谢//upapp是我一个实体类,UpdateURL存放了下载的地址(值为http://www.harde.com.cn/SoftUpdate/)//Path.Combine()是一个用来连接地址的方法,我将在另一日志中详细对其介绍}/// /// 下载进程变更事件 /// //////private void OnDownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) {//在网上看到有朋友这么来控制进度条,我觉得麻烦,毕竟有省事的为什么我要麻烦一番……//this.SetProcessBar(e.ProgressPercentage, (int)((nDownloadedTotal + e.BytesReceived) * 100 / total));progbar_single.Value = e.ProgressPercentage;lbl_singleInfo.Text = "已下载" + e.BytesReceived + "字节/总计" + e.TotalBytesToReceive + "字节";//一个label框,用来显示当前下载的数据 } /// /// 下载进程变更事件 /// //////private void OnDownloadFileCompleted(object sender, AsyncCompletedEventArgs e) {MessageBox.Show("complied!");//计算总下载进度,因为我在服务端XML文件里可以得到文件大小,所以我直接用服务端数据,我回头再看看有没有什么好办法 }
下载文件部分到这里就可以结束了
不过为了方便,我使用了一个数组用来存放下载文件列表
这样就可以批量下载了,现在时单线程下载
大家可以运用上多线程同时下载多个文件。大家可以参考我的另一篇日志
另外,为了给与更好的用户体验,大家可以在显示下载的地方把字节转换成KB、MB(因为harde是用来做程序更新的,所以单个文件都不会很大,因此只替换到MB、大家有需要可以自己写个GB的)
if ((e.BytesReceived / 1024) > 1024) {received = (e.BytesReceived / 1024) / 1024 + "MB"; } else {received = e.BytesReceived / 1024 + "KB"; }if (((e.TotalBytesToReceive / 1024) > 1024) && isCalculated) {total = (e.TotalBytesToReceive / 1024) / 1024 + "MB";isCalculated = true; } else {total = e.TotalBytesToReceive / 1024 + "KB";isCalculated = true; }
同时把显示的地方更改下
lbl_singleInfo.Text = "已下载" + received + "/总计" + total;
C#下载文件:WebClient相关推荐
- Net WebClient 异步批量下载文件
1.文件提前使用爬虫整理好,放到了demo文件夹下的1.txt文件中,文件格式如: http://www.banktunnel.eu/tumblr.com/tabea-lara.2_files/tum ...
- webclient下载文件 带进度条
private void button1_Click(object sender, EventArgs e){doDownload(textBox1.Text.Trim());}private Dat ...
- 微软私有云分享(R2)8-PowerShell下载文件
看过九叔之前博客的朋友应该会知道,在windows下通过命令行下载软件,使用"ftp"命令会比较方便.主要原因是windows下没有linux的命令"wget" ...
- Windows从web下载文件的几种方式
最近搞app自动化测试,需要自动从网页上下载apk用于测试,顺便学习了几种从web下载文件的方式. 一.PowerShell DownloadFile 命令 PowerShell 是一种winodws ...
- C#异步批量下载文件
实现原理:采用WebClient进行批量下载任务,简单的模拟迅雷下载效果! 废话不多说,先看掩饰效果: 具体实现步骤如下: 1.新建项目:WinBatchDownload 2.先建一个Windows窗 ...
- 使用 C# 下载文件的十八般武艺
文件下载是一个软件开发中的常见需求.本文从最简单的下载方式开始步步递进,讲述了文件下载过程中的常见问题并给出了解决方案.并展示了如何使用多线程提升 HTTP 的下载速度以及调用 aria2 实现非 H ...
- Unity下载文件的方式小结
1 UnityWebRequest下载 unity自带的下载方式,优点很明显:封装很好,使用简便,与unity使用兼容性很好且跨平台问题少:对应的缺点:扩展性差. 1.1 存在内存中供程序使用或者下载 ...
- unity 下载文件到存放本地
一.下载图片存放本地文件夹 public void DownloadFile() {WebClient webClient = new WebClient();//将图片下载到文件夹webClient ...
- rtthread + STM32F407VE + esp8266 +SD卡 从网络下载文件存到SD卡中
学习rtthread,通过文章记录学习过程的一些问题. 手上有一块STM32F407VE的核心板(带sd卡槽,连接MCU的SDIO),和安信可的esp8266-12F模块,现以此为基础实现从网络上下载 ...
最新文章
- 函数嵌套函数传递this值
- HTML5API(2)
- 剑指offer 算法 (发散思维能力)
- http请求中get和post的区别以及其他请求方式
- Winform中实现ZedGraph中曲线右键显示为中文
- 用linq查询html中div个数,C#使用Linq to XML进行XPath查询
- socket,TCP/IP的理解(转)
- 01背包初始化的细节问题与循环下限的改进
- MVC4下配置log4net 五部曲
- 《大数据》杂志——大数据技术发展的十个前沿方向(中)
- 【Elasticsearch】Elasticsearch 索引 模板 template
- 层次狄利克雷过程HDP(Hierarchical Dirichlet Processes)
- HDU 2825 Wireless Password(AC自动机 + 状压DP)题解
- 在Django中使用F()函数
- 人人开源renren-fast前后端
- c226打印机驱动安装_打印机驱动安装失败怎么办 打印机驱动安装方法【步骤详解】...
- mysql 关键字 desc_mysql数据库表字段使用DESC等关键字报错及解决方法
- 华为云HMS Core 助力鸿蒙开发
- 打开苹果电脑浏览器的代码
- python 进程详解
热门文章
- 金杉号:40岁—55岁人的创业项目有哪些?
- H5 视频Video 元素及常用事件 播放 暂停 初始化 设置播放时间禁用下载等
- Android studio打包app(打包后app即可分享给其他人正常安装)
- 不想提孙杨,斗胆说下移民吧
- 企业微信私有部署服务器连接失败,企业微信-私有部署
- nginx的https安全认证CA
- Hust oj 1861 猥琐宅男——koko(DP)
- 2020高压电工考试及高压电工模拟考试题
- Spring Boot 统一功能处理(用户登录权限效验-拦截器、异常处理、数据格式返回)
- python 自动办公ppt_基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)