中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 临时文章
看到有人用 WebClient来下载, 发篇用 WebRequest 实现有进度下载的吧.
作者:未知 时间:2005-07-27 21:43 出处:CSDN 责编:chinaitpower
              摘要:看到有人用 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);
    }
   }
   
  }//下载块#####################################################################################################



关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有