////// 下载带进度条代码(普通进度条) /// /// 网址 /// 下载后文件名为 /// 报告进度的处理(第一个参数:总大小,第二个参数:当前进度) ///True/False是否下载成功 public static bool DownLoadFile(string URL, string Filename, ActionupdateProgress = null) { Stream st = null; Stream so = null; System.Net.HttpWebRequest Myrq =null; System.Net.HttpWebResponse myrp = null; bool flag = false; try { 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; }
调用方式一:
if (FileUpDownload.DownLoadFile("下载文件的网址", "文件名", new Action( (int Maximum, int Value) => { //更新进度条 progressBar1.Maximum = Maximum; progressBar1.Value = Value; }) )) { //下载文件后的处理 }
不传参数的action写法:
((Form)form).BeginInvoke(new Action(() => { //处理 })调用方式二:
if (FileUpDownload.DownLoadFile("下载文件的网址", "文件名", UpdateProgressBar)) { //下载文件后的处理 } ////更新进度条 private void UpdateProgressBar(int Maximum, int Value) { progressBar1.Maximum = Maximum; progressBar1.Value = Value; }
小注:调用代码中的progressBar1是微软的进度条控件
URL示例:http://www.php.cn/
如果要充Windows Server上下载文件的话,需要在iis中配置,该目录为可以访问的,具体配置步骤如下:
1、找到需要下载文件对应的目录:
2、在右侧找到《目录浏览》:
3、在《目录浏览》上右键,点击:打开该功能
4、可以看到下图,启用即可:
以上就是C# 下载带进度条代码(普通进度条)的内容,更多相关内容请关注PHP中文网(www.php.cn)!
0
0
相关文章
c# 怎么设置 http 代理
c# WPF/WinForms 中的 Dispatcher.Invoke 和 Control.Invoke
C# .NET CLI使用方法 C#如何使用dotnet命令创建和管理项目
C# ONNX模型推理方法 C#如何使用ONNX Runtime加载和运行AI模型
C# 写入文件方法 C#如何实现写入文件
相关标签:
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
C++ 设计模式与软件架构
本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。
14
2026.01.30
热门下载
相关下载
最新文章













