zl程序教程

您现在的位置是:首页 >  后端

当前栏目

C# 下载带进度条代码(普通进度条)

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实现进度条效果,无需任何三方框架。