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

     
        ///           /// 下载带进度条代码(普通进度条)          ///           /// 网址          /// 下载后文件名为          /// 报告进度的处理(第一个参数:总大小,第二个参数:当前进度)          /// True/False是否下载成功          public static bool DownLoadFile(string URL, string Filename, Action updateProgress = 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、找到需要下载文件对应的目录:

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

2、在右侧找到《目录浏览》:

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

3、在《目录浏览》上右键,点击:打开该功能

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

4、可以看到下图,启用即可:

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

 以上就是C# 下载带进度条代码(普通进度条)的内容,更多相关内容请关注PHP中文网(www.php.cn)!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2551114.html

(0)
上一篇 2025年3月6日 06:05:17
下一篇 2025年3月6日 06:05:27

AD推荐 黄金广告位招租... 更多推荐

发表回复

登录后才能评论