专注于高品质PHP技术等信息服务于一体 [STIEMAP] [RSS]

百度提供的广告:
c#
当前位置:首页 > 技术文档 > c# >  > 
C# WebClient 设置超时 下载文件
class ThisWebClient : WebClient
        {
            protected override WebRequest GetWebRequest(Uri address)
            {
                HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
                request.Timeout = 60000;//设置超时为1分钟
                request.ReadWriteTimeout = 60000;
                return request;
            }
        }
    /// <summary>
        /// 下载图片,到指定目录
        /// </summary>
        /// <param name="url"></param>
        /// <param name="saveName"></param>
        /// <param name="saveDir"></param>
        private void DownImg(string url,string saveName,string saveDir)
        {
            textBoxMsg.AppendText("开始下载" + url + " " + DateTime.Now.ToString() + "\r\n\r\n");
            ThisWebClient web = new ThisWebClient();
            web.Headers["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; rv:14.0) Gecko/20100101 Firefox/14.0.1";
            web.Headers["Accept"] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
            web.Headers["Accept-Language"] = "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3";
            //如果文件夹不存在则创建
            if (!Directory.Exists(saveDir))
            {
                Directory.CreateDirectory(saveDir);
            }
            //如果文件名存在则重命名 1.jpg 1-1.jpg 1-2.jpg
            while (File.Exists(saveDir + "/" + saveName))
            {
                //文件类型拓展名//.jpg
                string ext = saveName.Substring(saveName.LastIndexOf("."));
                int flag = saveName.IndexOf("-");
                //如果不存在图片-1.jpg
                if (-1 == flag)
                {
                    saveName = saveName.Substring(0, saveName.LastIndexOf("."));
                    saveName += "-1" + ext;
                }
                else
                {
                    //读取数字并加1
                    int saveNameNum = Int32.Parse(saveName.Substring(saveName.LastIndexOf('-') + 1, saveName.LastIndexOf('.') - saveName.LastIndexOf('-') - 1));
                    saveNameNum++;
                    saveName = saveName.Substring(0, saveName.LastIndexOf("-")) + '-' +  saveNameNum + ext;
                }
            }
            //加入重试功能如出现404 或网络无法连接 重试3次
            int tryCount = 0;
            while (true)
            {
                try
                {
                    if (2 < tryCount)
                    {
                        textBoxMsg.AppendText("下载失败 " + DateTime.Now.ToString() + "\r\n\r\n");
                        break;
                    }
                    web.DownloadFile(url, saveDir + "/" + saveName);
                    break;
                }
                catch (Exception e)
                {
                    tryCount++;
                    //线程休眼10秒后在试
                    Thread.Sleep(10000);
                    textBoxMsg.AppendText(e.Message + "重试 " + tryCount + DateTime.Now.ToString() + "\r\n\r\n");
                }
            }


            web.Dispose();
            textBoxMsg.AppendText("下载完成" + url + " " + DateTime.Now.ToString() + "\r\n\r\n");
        }