首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
tellmenow (22)
cutemouse (22)
softj (78)
iiprogram (69)
qdzx2008 (50)
goodboy1881 (14)
wangchinaking (58)
fancyhf (1)
harrymeng (41)
yjz0065 (113)
CSDN - 文档中心 - .NET 阅读:1648   评论: 0    参与评论
标题   看到有人用 WebClient来下载, 发篇用 WebRequest 实现有进度下载的吧.     选择自 minghao1039 的 Blog
关键字   看到有人用 WebClient来下载, 发篇用 WebRequest 实现有进度下载的吧.
出处  

记得以前刚用的时候,webclient确实看着挺简单,但是实现起来,小文件是一下就下载完了.

大文件要一直下载完毕才行.

后来找了找,用 WebRequest 结合 WebResponse 可以实现 有进度提示的,下载文件..
下面是代码..是从我一个软件中提取出来的.只取关键部分说明...
=====================================================================
     if(Downloading==false) //如果无文件正在下载
     { 
      TempDown=CurrentFileName;
      if(CurrentFileName==""){TempDown=b;}
      WhichDown=1;
      System.Threading.Thread ApcThread2=new System.Threading.Thread(new System.Threading.ThreadStart(DownFile));
      ApcThread2.Start();
   
     }
     else
     {
      MessageBox.Show("对不起,当前正在下载文件.","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
     }      
##################
大概说明下,如果当前没有文件正在下载,则启动一个新线程....下载文件.. 下面是 DownFile函数的代码....
简单的地方就不做注释了.
=============================================================================
  //下载块#####################################################################################################
  private void DownFile()
  {
   if(TempDown!="")
   {
   
    if(Downloading==false) //如果无文件下载
    {
     long fb;
     this.apc_status_1.Text="正在连接到 " + TempDown;
     Downloading=true;
     try
     {
      //====尝试URL有效性,以及初始化下载界面
      WebRequest myre=WebRequest.Create(TempDown);
      WebResponse mwrite=myre.GetResponse();
      fb=mwrite.ContentLength;
      this.apc_status_1.Text="连接成功..开始下载..";
      pbar.Value=0;
      pbar.Maximum=(int)fb;
      pbar.Visible=true;
      this.ApcList.Height=156;
      //====开始下载
      WebClient wc=new WebClient();
      SaveFileDialog sf=new SaveFileDialog();
      sf.Title="请选择文件存放的位置";
      filename=CurrentFileName;
      sf.FileName=filename.Substring(filename.LastIndexOf("/")+1,filename.Length-filename.LastIndexOf("/")-1);
      sf.ShowDialog(this);
      filename=sf.FileName;
      if(filename!="")
      {
       Stream srm=wc.OpenRead(TempDown);
       StreamReader srmer=new StreamReader(srm);
       byte[] mbyte=new byte[fb];
       int allbyte=(int)mbyte.Length;
       int startbyte=0;
       while(fb>0)  //################   循环读取文件,并显示进度.....
       {
        Application.DoEvents();
        int m=srm.Read(mbyte,startbyte,allbyte);
        if(m==0){break;}
        startbyte+=m;
        allbyte-=m;
        pbar.Value+=m;
        int a1=(int)startbyte/1024;
        int a2=(int)fb/1024;
        this.apc_status_1.Text="连接成功..开始下载.." + a1.ToString() + "/" + a2.ToString() + "KB";//startbyte + "/" + fb.ToString();
       }

       FileStream fs = new FileStream(filename,FileMode.OpenOrCreate);
       fs.Write(mbyte,0,mbyte.Length);
       fs.Flush();


       srm.Close();
       srmer.Close();
       fs.Close();

       this.ApcList.Height=170;
       pbar.Visible=false;
       this.apc_status_1.Text="文件下载完毕!";
      }                     


     }
     catch(WebException exp) //如地址无效或者找不到文件
     {
      MessageBox.Show(exp.Message,"听啪啪 提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
     }
     Downloading=false;
    }
    else
    {
     MessageBox.Show("对不起,当前正在下载文件.","听啪啪 提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
    }
   }
   else
   {
    if(WhichDown==1)
    {
     MessageBox.Show("当前并无文件播放.","听啪啪 提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
    }
    else
    {
     MessageBox.Show("请在列表中选择好想要下载的文件.","听啪啪 提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
    }
   }
   
  }//下载块#####################################################################################################


相关文章
对该文的评论