FluentFTP 是一個適用於 .NET 和 .NET Standard 的 FTP 和 FTPS 用戶端。
並且針對速度進行了最佳化,沒有外部依賴,完全用 C# 編寫。

功能特色
完全支援 FTP、FXP、FTPS、帶 TLS 1.3 的 FTPS、帶用戶端憑證的 FTPS 和 FTPS 代理。
全面支援 30 多種 FTP Server 類型。
支援各種檔案和目錄列表(Unix、Windows/IIS、Azure、Pure-FTPd、ProFTPD、Vax、VMS、OpenVMS、Tandem、HP NonStop Guardian、IBM z/OS 和 OS/400、Windows CE、Serv-U 等)。
支援遞迴目錄列出和進行目錄刪除。
透過進度追蹤可以輕鬆從伺服器上傳和下載檔案。
建立、追加、讀取、寫入、重新命名、移動和刪除檔案和資料夾。
非同步支援,所有操作都可以使用 async await。
C# 使用範例
// 透過使用者名稱密碼建立連線
var client = new AsyncFtpClient("123.123.123.123", "david", "pass123");
// 連接到伺服器,並設定自動重新連線
await client.AutoConnect();
// 列出所有的檔案
foreach (FtpListItem item in await client.GetListing("/htdocs")) {
// 如果是檔案類型
if (item.Type == FtpObjectType.File) {
// 取得檔案大小
long size = await client.GetFileSize(item.FullName);
// 計算檔案 hash
FtpHash hash = await client.GetChecksum(item.FullName);
}
// 取得檔案或資料夾的修改時間
DateTime time = await client.GetModifiedTime(item.FullName);
}
// 上傳一個檔案
await client.UploadFile(@"C:\MyVideo.mp4", "/htdocs/MyVideo.mp4");
// 移動檔案
await client.MoveFile("/htdocs/MyVideo.mp4", "/htdocs/MyVideo_2.mp4");
// 下載檔案
await client.DownloadFile(@"C:\MyVideo_2.mp4", "/htdocs/MyVideo_2.mp4");
// 刪除檔案
await client.DeleteFile("/htdocs/MyVideo_2.mp4");
// 關閉連線,結束
await client.Disconnect();