如果自己單槍匹馬寫一個連接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)));