/// <summary>
        /// 下载远程文件
        /// </summary>
        /// <param name="downAddress">下载地址</param>
        /// <param name="savePath">保存路径</param>
        /// by http://hi.baidu.com/alocne
        private void DownLoad(string downAddress,string savePath)
        {
            DirectoryInfo di = Directory.GetParent(savePath);
            if (!di.Exists)
            {
                di.Create();
            }
            if (File.Exists(savePath))
            {
                fs = new FileStream(savePath, FileMode.Append, FileAccess.Write);
            }
            else
            {
                fs = new FileStream(savePath, FileMode.Create, FileAccess.Write);
            }
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(downAddress);
            request.AllowAutoRedirect = false;
            request.Method = "GET";
            request.UserAgent = "Opera/9.25 (Windows NT 6.0; U; en)";
            CookieContainer cc = new CookieContainer();

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            if (response.ContentLength <= fs.Length)
            {
                return;
            }
           
            request.Abort();
            request = null;
            response.Close();

            request = (HttpWebRequest)HttpWebRequest.Create(downAddress);
            request.AddRange((int)fs.Length);
            response = (HttpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();
            long Length = response.ContentLength + fs.Length;
            //delSetProcess1 pro1 = new delSetProcess1(SetProcess1);
            //this.Invoke(pro1, Length);//进度条

            int i;
            byte[] buffer = new byte[2048];
            delSetProcess pro = new delSetProcess(SetProcess);
            do
            {
                i = responseStream.Read(buffer, 0, 2048);
                fs.Write(buffer, 0, i);
                //this.Invoke(pro);
            }
            while (i > 0);
            fs.Close();
            responseStream.Close();
            responseStream.Dispose();
            response.Close();
            responseStream = null;
            response = null;
            request = null;
        }

调用:DownLoad(http://www.xuehi.com/1.rar,@"c:\1.rar");

遇到网络不稳定或文件太大的时候有时会断开连接出现异常而无法完成下载

可以修改代码,加异常捕捉,循环下载

阅读全文
类别:c# 查看评论

相关文章:

  • 2022-12-23
  • 2021-09-18
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-23
猜你喜欢
  • 2021-11-20
  • 2022-02-03
  • 2022-12-23
  • 2021-07-27
  • 2022-12-23
  • 2022-12-23
  • 2021-11-18
相关资源
相似解决方案