C#用の無料のFTPライブラリ(クラス)を推奨できますか。
クラスは適切に記述され、優れたパフォーマンスを備えている必要があります。
C#用の無料のFTPライブラリ(クラス)を推奨できますか。
クラスは適切に記述され、優れたパフォーマンスを備えている必要があります。
回答:
以前はSystem.Net.FtpClientと呼ばれていたFluentFTPを検討してください。
MITライセンスの下でリリースされ、NuGet(FluentFTP)で入手できます。
.NETフレームワークに付属しているライブラリhttp://msdn.microsoft.com/en-us/library/ms229718.aspxを使用しないのはなぜですか。
編集:https ://stackoverflow.com/users/1527/による2019年4月 この回答は無効になりました。他の回答はマイクロソフトによって承認されています。
これらは、使用することを推奨しないMicrosoftによって設計されました。
新規開発でFtpWebRequestクラスを使用することはお勧めしません。FtpWebRequestの詳細と代替方法については、GitHubでWebRequestを使用しないでくださいをご覧ください。(https://docs.microsoft.com/en-us/dotnet/api/system.net.ftpwebrequest?view=netframework-4.7.2)
「WebRequestを使用しないでください」ページは、ライブラリの最も信頼できるリストとして、この質問を示しています。
FtpWebRequest
クラスは、個々のファイルのダウンロードやアップロードなど、要求/応答パターンでモデル化できる単純なトランザクションFTPアクションに対してのみ実際に機能します。FTPフォルダー構造の作成や、同じセッションでのアップロードとダウンロードなどのタスクを実行するために使用するのは非常に困難です。
edtFTPnetは、C#で記述された.NET用の無料の高速オープンソースFTPライブラリです。
私はMicrosoft MVPの名前であるAlex Pilottiによって書かれたAlex FTPS Clientが好きです。これは、コンソールアプリ、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);
}
}
FtpListItem[] items = ftp.GetListing();//here you can get list with type, name, modified date and other properties. FtpFile file = new FtpFile(ftp, "8051812.xml");//file to get file.Download("c:\\8051812.xml");//download file.Name = "8051814.xml";//change name to get new file.Download("c:\\8051814.xml"); ftp.Disconnect();//close