.NET 最好用的開放原始碼 FTP 用戶端程式庫

.NET 最好用的開放原始碼 FTP 用戶端程式庫

FluentFTP 是一個適用於 .NET 和 .NET Standard 的 FTP 和 FTPS 用戶端。

最後更新 2023/7/17 下午7:59
工具箱
預計閱讀 2 分鐘
分類
.NET
標籤
.NET C# 開源

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

專案位址

https://github.com/robinrodricks/FluentFTP

繼續探索

延伸閱讀

更多文章
同分類 / 同標籤 2026/2/7

AOT使用經驗總結

從專案建立伊始,就應養成良好的習慣,即只要添加了新功能或使用了較新的語法,就及時進行 AOT 發布測試。

繼續閱讀