c# WebClient文件下载

 public void HttpDownload(string url, string path, ResourceType type)
        {
            using (var client = new WebClient())
            {
                client.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
                client.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
                var stream = client.OpenRead(url);
                if (type == ResourceType.Document)
                {
                    var header = client.ResponseHeaders["Content-Disposition"];
                    var subStr = header.Split('=');
                    var fileName = System.Web.HttpUtility.UrlDecode(subStr[1]);
                    path = GetFileValidation(path, fileName, out fileName);
                }
                FileStream writeStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
                ReadWriteStream(stream, writeStream);
            }
        }
private void ReadWriteStream(Stream readStream, Stream writeStream)
        {
            int Length = 256;
            Byte[] buffer = new Byte[Length];
            int bytesRead = readStream.Read(buffer, 0, Length);
            // write the required bytes
            while (bytesRead > 0)
            {
                writeStream.Write(buffer, 0, bytesRead);
                bytesRead = readStream.Read(buffer, 0, Length);
            }
            readStream.Close();
            writeStream.Close();
        }
//验证文件是否存在
 public string GetFileValidation(string path, string oldTitle, out string newTitle)
        {
            string newPath = System.IO.Path.Combine(path, oldTitle.Replace("\"", ""));
            string title1 = oldTitle;

            if (File.Exists(newPath))
            {
                for (int i = 1; i < int.MaxValue; i++)
                {
                    newPath = System.IO.Path.Combine(path, oldTitle.Split('.')[0] + "(" + i + ")" + "." + oldTitle.Split('.')[1]);
                    if (!File.Exists(newPath))
                    {
                        title1 = oldTitle.Split('.')[0] + "(" + i + ")" + "." + oldTitle.Split('.')[1];
                        break;
                    }
                    else
                    {
                        continue;
                    }
                }
            }
            newTitle = title1;
            return newPath;
        }

  

posted @ 2016-02-29 14:54  mysuper  阅读(1319)  评论(0编辑  收藏  举报