C# 从FTP服务器下载文件到本地

来源:互联网 发布:怎么在淘宝上开通花呗 编辑:程序博客网 时间:2024/05/18 15:05
 static void Main(string[] args)        {            //ftp服务器路径            string ftpServer = System.Configuration.ConfigurationSettings.AppSettings["FtpServer"].ToString();            //ftp本地路径            string ftpDefaultUrl = System.Configuration.ConfigurationSettings.AppSettings["FtpDefaultUrl"].ToString();            //登入到ftp的账号            string ftpUserName = System.Configuration.ConfigurationSettings.AppSettings["LoginID"].ToString();            //登入到ftp的密码            string ftpUserPwd = System.Configuration.ConfigurationSettings.AppSettings["LoginPWD"].ToString();            //下载后的文件存放路径            string downloadUrl = System.Configuration.ConfigurationSettings.AppSettings["DownloadPath"].ToString();            //需要下载的文件名            string fileName =  "test.txt";            //需要现在的文件在ftp上的完整路径            string fileUploadPath = ftpServer + ftpDefaultUrl;            Uri uri = new Uri(fileUploadPath+"/"+fileName);            //下载后存放的路径            string FileName = Path.GetFullPath(downloadUrl) + Path.DirectorySeparatorChar.ToString() + Path.GetFileName(uri.LocalPath);                         //创建文件流            FileStream fs = null;            Stream responseStream = null;            try {                //创建一个与FTP服务器联系的FtpWebRequest对象                FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);                //设置请求的方法是FTP文件下载                request.Method = WebRequestMethods.Ftp.DownloadFile;                //连接登录FTP服务器                request.Credentials = new NetworkCredential(ftpUserName, ftpUserPwd);                //获取一个请求响应对象                FtpWebResponse response = (FtpWebResponse)request.GetResponse();                //获取请求的响应流                responseStream = response.GetResponseStream();                //判断本地文件是否存在,如果存在,则打开和重写本地文件                if (File.Exists(FileName))                {                    fs = File.Open(FileName, FileMode.Open, FileAccess.ReadWrite);                }                else                {                    fs = File.Create(FileName);                }                           if (fs != null)                {                    int buffer_count = 65536;                    byte[] buffer = new byte[buffer_count];                    int size = 0;                    while ((size = responseStream.Read(buffer, 0, buffer_count)) > 0)                    {                        fs.Write(buffer, 0, size);                    }                    fs.Flush();                    fs.Close();                    responseStream.Close();                }            }            finally            {                if (fs != null)                    fs.Close();                if (responseStream != null)                    responseStream.Close();            }        }


App.config

<?xml version="1.0" encoding="utf-8" ?><configuration>  <appSettings>    <add key="FtpServer" value="ftp://192.168.123.156/"/>    <add key="FtpDefaultUrl" value="/Upload"/>    <add key="LoginID" value="zs"/>    <add key="LoginPWD" value="123@qwe"/>    <add key="DownloadPath" value="/Download"/>  </appSettings></configuration>  


 

原创粉丝点击