C# 下载带进度条代码(普通进度条)
2023-09-14 09:03:17 时间
span > span /span pre name="code" span /// summary
/// 下载带进度条代码(普通进度条)
/// /summary
/// param name="URL" 网址 /param
/// param name="Filename" 下载后文件名为 /param
/// param name="Prog" 报告进度的处理(第一个参数:总大小,第二个参数:当前进度) /param
/// returns True/False是否下载成功 /returns
public static bool DownLoadFile(string URL, string Filename, Action int, int updateProgress = null)
Stream st = null;
Stream so = null;
System.Net.HttpWebRequest Myrq =null;
System.Net.HttpWebResponse myrp = null;
bool flag = false;
Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(URL); //从URL地址得到一个WEB请求
myrp = (System.Net.HttpWebResponse)Myrq.GetResponse(); //从WEB请求得到WEB响应
long totalBytes = myrp.ContentLength; //从WEB响应得到总字节数
//更新进度
if (updateProgress != null)
updateProgress((int)totalBytes,0);//从总字节数得到进度条的最大值
st = myrp.GetResponseStream(); //从WEB请求创建流(读)
so = new System.IO.FileStream(Filename, System.IO.FileMode.Create); //创建文件流(写)
long totalDownloadedByte = 0; //下载文件大小
byte[] by = new byte[1024];
int osize = st.Read(by, 0, (int)by.Length); //读流
while (osize 0)
totalDownloadedByte = osize + totalDownloadedByte; //更新文件大小
Application.DoEvents();
so.Write(by, 0, osize); //写流
//更新进度
if (updateProgress != null)
updateProgress((int)totalBytes, (int)totalDownloadedByte);//更新进度条
osize = st.Read(by, 0, (int)by.Length); //读流
//更新进度
if (updateProgress != null)
updateProgress((int)totalBytes, (int)totalBytes);
flag= true;
catch(Exception )
flag = false;
throw;
//return false;
finally
if (Myrq != null)
Myrq.Abort();//销毁关闭连接
if (myrp != null)
myrp.Close();//销毁关闭响应
if (so != null)
so.Close(); //关闭流
if (st != null)
st.Close(); //关闭流
return flag;
} /span
调用方式一:
span if (FileUpDownload.DownLoadFile("下载文件的网址", "文件名", new Action int, int ( (int Maximum, int Value) //更新进度条 progressBar1.Maximum = Maximum; progressBar1.Value = Value; //下载文件后的处理
span /span pre name="code" span if (FileUpDownload.DownLoadFile("下载文件的网址", "文件名", UpdateProgressBar)) //下载文件后的处理 ////更新进度条 private void UpdateProgressBar(int Maximum, int Value) progressBar1.Maximum = Maximum; progressBar1.Value = Value; } /span
小注:调用代码中的progressBar1是微软的进度条控件
URL示例:http://111.111.111.211/TestService/download/V1.00/1.00_0012.zip
如果要充Windows Server上下载文件的话,需要在iis中配置,该目录为可以访问的,具体配置步骤如下:
1、找到需要下载文件对应的目录:
2、在右侧找到《目录浏览》:
3、在《目录浏览》上右键,点击:打开该功能
4、可以看到下图,启用即可:
几行代码就能实现漂亮进度条,太赞了! 作为程序员,我们经常会遇到比较耗时的操作,这个时候我们大多数人会无助地等待程序执行完成,有些人会趁机摸一下鱼,以便渡过这个无聊看起来又有点未知的时间,我就是这样做的。 但是,我们也可以选择另一种方式——用一个炫酷的进度条,来观察处理进度,也可以及时了解程序运行的情况,做到心中有数。
html进度条在web播放器中很常见,之前html并没有进度条这个标签,html5后出了一个progress标签作为进度条,但是并不是很好用,那么接下来,我们将用css+html+js实现进度条效果,无需任何三方框架。
相关文章
- C#编程入门_ToArray和CopyTo的区别_22「建议收藏」
- C# -XML用法(XmlDocument )
- C#多线程
- c# 多线程并发-金三银四面试:C#.NET面试题高级篇2-多线程
- c#面试题抽象类和接口的区别-金三银四面试:C#程序员经常遇到的30道基础面试题,想你所想
- C#下载http文件详解编程语言
- asp.net(c#)EnterpriseLibrary3.0下载
- C#文字代码页文字编码的代码页名称速查表
- C#基础之数据类型转换
- C#实现支持断点续传多线程下载客户端工具类
- 浅析C#web访问mysql数据库-整理归纳总结
- javascript模拟实现C#String.format函数功能代码
- C#正则表达式分解和转换IP地址实例(C#正则表达式大全c#正则表达式语法)
- c#详解datetime使用示例
- C#实现winform渐变效果的方法
- C#执行DOS命令的方法
- C#入门之窗体的简单用法实例