C#用の無料のFTPライブラリ(クラス)を推奨できますか。
クラスは適切に作成され、パフォーマンスが良好でなければなりません。
FluentFTP 、以前は System.Net.FtpClient として知られていました。
MIT License でリリースされ、NuGet(FluentFTP)で利用可能です。
.NETフレームワークに付属のライブラリを使用しないのはなぜですか? http://msdn.Microsoft.com/en-us/library/ms229718.aspx ?
編集:2019年4月 https://stackoverflow.com/users/1527/ この回答は無効です。他の回答はマイクロソフトによって承認されています。
これらは、使用することを推奨しなくなったマイクロソフトによって設計されました。
新規開発にFtpWebRequestクラスを使用することはお勧めしません。 FtpWebRequestの詳細と代替手段については、GitHubでWebRequestを使用しないでくださいを参照してください。 ( https://docs.Microsoft.com/en-us/dotnet/api/system.net.ftpwebrequest?view=netframework-4.7.2 )
「WebRequestを使用しないでください」ページは、この質問をライブラリの決定的なリストとして順番に示しています!
edtFTPnet は、C#で記述された、.NET用の無料の高速オープンソースFTPライブラリです。
私は Alex FTPS Client が好きです。これはMicrosoft MVP名Alex Pilottiによって書かれています。これは、コンソールアプリ、Windowsフォーム、PowerShell、ASP.NET(任意の.NET言語)で使用できるC#ライブラリです。マルチスレッドアプリを使用している場合は、ライブラリを同期して実行するように構成する必要がありますが、全体としては、おそらく必要なものを取得できる優れたクライアントです。
同じ問題で多くの調査をした後、私はこれが非常に便利であることがわかりました: https://github.com/flagbug/FlagFtp
たとえば(標準の.net "ライブラリ"でこれを試してみてください-これは本当に苦痛です)-> FTPサーバー上のすべてのファイルを再帰的に取得します。
public IEnumerable<FtpFileInfo> GetFiles(string server, string user, string password)
{
var credentials = new NetworkCredential(user, password);
var baseUri = new Uri("ftp://" + server + "/");
var files = new List<FtpFileInfo>();
AddFilesFromSubdirectory(files, baseUri, credentials);
return files;
}
private void AddFilesFromSubdirectory(List<FtpFileInfo> files, Uri uri, NetworkCredential credentials)
{
var client = new FtpClient(credentials);
var lookedUpFiles = client.GetFiles(uri);
files.AddRange(lookedUpFiles);
foreach (var subDirectory in client.GetDirectories(uri))
{
AddFilesFromSubdirectory(files, subDirectory.Uri, credentials);
}
}
私はちょうど 記事を投稿しました FTPクライアントクラスとFTPユーザーコントロールの両方を提示しています。
これらはシンプルで非常に高速ではありませんが、非常に使いやすく、すべてのソースコードが含まれています。ユーザーコントロールをフォームにドロップするだけで、ユーザーがアプリケーションからFTPディレクトリをナビゲートできるようになります。