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();