怎样把远程URL(如http://zi.csdn.net/58560ali.jpg)自动下载并保存在D:\下呢?

解决方案 »

  1.   

       WebRequest web = WebRequest.Create("http://zi.csdn.net/58560ali.jpg");
            WebResponse wrp = web.GetResponse();
            Stream stream = wrp.GetResponseStream();
            int n = (int)wrp.ContentLength;
            byte[] byteImg = new byte[n];
            stream.Read(byteImg,0,n);
            wrp.Close();
            FileStream fs = File.Create("d:\\1.jpg");
            fs.Write(byteImg, 0, n);
            fs.Close();
      

  2.   


    //以前做的,仅供参考
    using System; 
    using System.Data; 
    using System.Configuration; 
    using System.Collections; 
    using System.Web; 
    using System.Web.Security; 
    using System.Web.UI; 
    using System.Web.UI.WebControls; 
    using System.Web.UI.WebControls.WebParts; 
    using System.Web.UI.HtmlControls; 
    using System.Threading; 
    using System.Data.SqlClient; 
    using System.IO; 
    using System.Net; public partial class Default2 : System.Web.UI.Page 

        private WebClient client = new WebClient(); 
        private string URLAddress = string.Empty; 
        private string fileName = string.Empty;     #region 窗体加载事件 
        protected void Page_Load(object sender, EventArgs e) 
        { 
            this.Title = "测试网页"; 
            Securities security = new Securities(); 
            if (!security.HasLogined()) 
            { 
                Response.Write(" <script>alert('请先登陆!') </script>"); 
                Server.Transfer("Default.aspx"); 
            } 
            string role = Session["role"].ToString(); 
            if (!role.Equals("employee")) 
            { 
                Response.Write(" <script>alert('很抱歉,您的权限不够!') </script>"); 
                Server.Transfer("Default.aspx"); 
            } 
            if (!Page.IsPostBack) 
            { 
                DownFileToDirectory(); 
            } 
        } 
        #endregion     #region 将选定的种子文件下载到指定目录下 
        private void DownFileToDirectory() 
        { 
            if (Request["key"] != null && !Request["key"].Equals(string.Empty)) 
            { 
                try 
                { 
                    int fid = Convert.ToInt32(Request["key"]);      //文件的编号,从库中取,服务端有此资源 
                    string connStr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
                    SqlConnection conn = new SqlConnection(connStr); 
                    string sql = "select FileName from fileTable where fileId=" + fid + ""; 
                    SqlDataAdapter adapter = new SqlDataAdapter(sql, conn); 
                    DataTable dt = new DataTable(); 
                    adapter.Fill(dt); 
                    if (dt.Rows.Count > 0) 
                    { 
                        URLAddress = "http://192.168.1.210/Test/DownloadList.aspx"; 
                        fileName = dt.Rows[0]["FileName"].ToString(); 
                        StartDownload(); 
                    } 
                } 
                catch 
                { 
                    Response.Redirect("Download.aspx"); 
                } 
            } 
            Response.Redirect("Download.aspx"); 
        } 
        #endregion     #region 下载某网页的文件 
        private void DownloadFileByUrl() 
        { 
            string Dir = @"C:\Program Files\myDirectory\fileByDownload"; 
            if (!Directory.Exists(Dir)) 
            { 
                Directory.CreateDirectory(Dir); 
            } 
            string savePath = Dir + "\\" + fileName; 
            if (File.Exists(savePath)) 
            { 
                return; 
            }         try 
            { 
                WebRequest myre = WebRequest.Create(URLAddress); 
            } 
            catch (WebException exp) 
            { 
                string e = exp.Message; 
            }         try 
            { 
                client.Credentials = CredentialCache.DefaultCredentials; 
                client.DownloadFile(URLAddress, savePath); 
            } 
            catch (WebException exp) 
            { 
                string e = exp.Message; 
            } 
            finally 
            { 
                Thread cur = Thread.CurrentThread; 
                if (cur.Name.Equals("autoDown")) 
                { 
                    cur.Abort(); 
                } 
            } 
        } 
        #endregion     #region 启用线程,下载文件 
        private void StartDownload() 
        { 
            Thread th = new Thread(new ThreadStart(DownloadFileByUrl)); 
            th.Name = "autoDown"; 
            th.Start(); 
        } 
        #endregion 
    }
      

  3.   

      /// <summary>
            ///  下载文件
            /// </summary>
            /// <param name="PageUrl">网址</param>
            /// <param name="filename">保存文件路径</param>
            public void DownFile(string PageUrl, string filename)
            {
                if (!Directory.Exists(filename))
                {
                    Directory.CreateDirectory(filename);
                }
                string  path = PageUrl.Substring(PageUrl.LastIndexOf("/") + 1);
                string dirname = filename + "\\" + path;
                if (File.Exists(dirname))
                {
                    return;
                }
                else
                {
                    try
                    {                    
                        WebClient wc = new WebClient();
                        WebProxy wp = new WebProxy(al[proxy].ToString(), true);
                        wc.Proxy = wp;
                        wc.DownloadFile(PageUrl, dirname);
                    }
                    catch (WebException ex)
                    {                   
                        if (ex.Status == WebExceptionStatus.ProtocolError)
                        {
                            //文件未找到--跳出 
                            //MessageBox.Show(ex.ToString());
                            return;
                        }
                        else
                        {
                            //换代理 IP
                            //MessageBox.Show(ex.ToString());
                            proxy++;
                            if (proxy >= al.Count)
                            {
                                al = ReadIPproxy("e:\\test.txt");//初始化代理   IP
                            }
                            DownFile(PageUrl, filename);
                        }
                    }
                }        }