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

<span style="font-size:14px;">     </span><pre name="code" class="csharp"><span style="font-size:14px;">        /// <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;
            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;
        }</span>

调用方式一:

<span style="font-size:14px;"> if (FileUpDownload.DownLoadFile("下载文件的网址", "文件名", new Action<int, int>(
        (int Maximum, int Value)
        =>
        {
            //更新进度条
            progressBar1.Maximum = Maximum;
            progressBar1.Value = Value;
        })
))
{
	//下载文件后的处理

}</span>

调用方式二:

<span style="font-size:14px;"> </span><pre name="code" class="csharp"><span style="font-size:14px;"> 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、可以看到下图,启用即可:

时间: 2024-10-08 05:16:19

C# 下载带进度条代码(普通进度条)的相关文章

Android Progress进度条代码,进度条刷新问题探讨

转载注明出处,Lee http://blog.csdn.net/hnulwt/article/details/44462177 今天看到讨论说关于进度条走的慢的问题.实际问题是这样的:后台执行的程序速度会很快,但是在界面上感觉得到进度条是走的比较慢的.为此,做了一个小实验,代码上实验在1秒的时间 通过俩种方式增加进度条至100%(每隔10ms增加1%和 每隔250ms增加25%),验证哪种方式给人的感觉快,但是在demo做出来之后,确发现了新的问题,想在此与大家共同讨论. 问题 根据代码,我预想

赵雅智_android多线程下载带进度条

progressBar说明 在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度.一个进度条也可不确定其进度.在不确定模式下,进度条显示循环动画.这种模式常用于应用程序使用任务的长度是未知的. XML重要属性 android:progressBarStyle:默认进度条样式 android:progressBarStyleHorizontal:水平样式 progressBar重要方法 getMax():返回这个进度条的范围的

一款基于jquery带百分比的响应式进度加载条

今天要给大家带来一款基于jquery带百分比的响应式进度加载条.这款加载条非常漂亮,而且带有进度的百度比,且在不同的百分比用的是不同的颜色.而且这款加载条采用了响应式设计,在不同的分辨率的显示器下完美支持.一起看下效果图吧. 在线预览   源码下载 实现的代码. html代码: <h1> Battle.net <b>style progress bar</b></h1> <div class="progress"> <b

基于jQuery网页步骤流程进度条代码

基于jQuery网页步骤流程进度条代码里面包含两款不同效果的jQuery步骤进度条特效.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="step_context test"></div> 当前步骤:第<input type="text" value="5" id="currentStepVal" />步 <button onclick=&qu

AFHTTPSessionManager下载文件 及下载中 进度条处理,进度条处理需要特别注意,要加载NSRunLoop 中

1.下载文件 和进度条处理代码 - (void)timer:(NSTimer *)timer{ // 另一个View中 进度条progress属性赋值 _downloadView.progress = self.pressing; if (self.pressing >= 1.0) { [timer invalidate]; } } -(void)downloadWithUrlString:(NSString *)urlString { //1.创建会话管理者 AFHTTPSessionMana

python3 简单进度条代码

进度条代码函数实现 import sys, time class ShowProcess(object): """ 显示处理进度的类 调用该类相关函数即可实现处理进度的显示 """ #i = 0 # 当前的处理进度 #max_steps = 0 # 总共需要处理的次数 #max_arrow = 50 #进度条的长度 # 初始化函数,需要知道总共的处理次数 def __init__(self, max_steps): self.max_steps

ExtJs--03--几个进度条代码,可以看看

/* * //通过固定时间完成进度条,即:伪进度条 Ext.onReady(function () { var progressBar = Ext.Msg.show({ title: "进度条", msg: "通过固定时间完成进度", width: 300, wait: true, waitConfig: { interval: 500, duration: 5000, fn: function () { Ext.Msg.hide(); } }, closable:

自定义圆形进度条 自定义倒计时进度条

自定义圆形进度条 自定义倒计时进度条 版权声明:转载必须注明本文转自严振杰的博客: http://blog.csdn.net/yanzhenjie1003 此控件源码已开源到Github:https://github.com/yanzhenjie/CircleTextProgressbar,欢迎Star. 欢迎加入我博客左侧的QQ交流群一起探讨. 效果预览 源代码传送门:https://github.com/yanzhenjie/CircleTextProgressbar 实现与原理 这个文字圆

097在进度条中显示进度百分比

效果如下: ViewController.h 1 #import <UIKit/UIKit.h> 2 #import "KMProgressViewWithLabel.h" 3 4 @interface ViewController : UIViewController 5 @property (strong, nonatomic) KMProgressViewWithLabel *progressViewCustom; 6 7 @end ViewController.m