FluentFTP は、.NET および .NET Standard 向けの FTP および FTPS クライアントです。
速度に最適化されており、外部依存関係がなく、完全に C# で書かれています。

機能
FTP、FXP、FTPS、TLS 1.3 対応の FTPS、クライアント証明書対応の FTPS、FTPS プロキシを完全サポート。
30 種類以上の FTP サーバータイプを完全サポート。
さまざまなファイルおよびディレクトリリスト(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);
// ファイルハッシュを計算
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();