你的位置:首页 > ASP.net教程

[ASP.net教程]C# System.Net.FtpClient库连接ftp服务器(上传文件)


如果自己单枪匹马写一个连接ftp服务器代码那是相当恐怖的(socket通信),有一个评价较高的dll库可以供我们使用。

那就是System.Net.FtpClient,链接地址:https://netftp.codeplex.com

然后下载该资源,我们就可以使用它的函数了。这里介绍一下如何使用System.Net.FtpClient链接ftp服务器并上传自己文件至服务器。

千万别忘了添加引用——导入System.Net.FtpClient.dll.

还有就是 using System.Net.FtpClient;

            using System.Net;

 1     /// <summary> 2     /// FTP上传文件 3     /// </summary> 4     /// <param name="strServer">服务器地址</param> 5     /// <param name="strUser">用户名</param> 6     /// <param name="strPassword">密码</param> 7     /// <param name="Savepath">服务器用于保存的文件夹路径,不是服务器根路径,例如: "/UploadDocumentsSave/"</param> 8     /// <param name="localpath">本地路径</param> 9     /// <param name="filetype">文件类型,例如: ".rte"</param>10     public void FTPUpload(string strServer, string strUser, string strPassword, string Savepath, string localpath, string filetype)11     {12         FtpClient ftp = new FtpClient();13         ftp.Host = strServer;14         ftp.Credentials = new NetworkCredential(strUser, strPassword);15          ftp.Connect();16 17         string[] files = Directory.GetFiles(localpath, "*" + filetype);18         if(files.Length!=0)19          {20           foreach (string file in files)21            {22             using (var fileStream = File.OpenRead(file))23             using (var ftpStream = ftp.OpenWrite(Savepath+Path.GetFileName(file)))24             {25               var buffer = new byte[8 * 1024];26               int count;27               while ((count = fileStream.Read(buffer, 0, buffer.Length)) > 0)28               {29                 ftpStream.Write(buffer, 0, count);30               }31             }32           }33            MessageBox.Show("OK");34         }      35     }

如果FTP服务器内没有用于保存的文件夹存在,只有一个根文件夹,那么,第23行就改成:

 using (var ftpStream = ftp.OpenWrite("/"+Path.GetFileName(file)));