Können Sie eine kostenlose FTP-Bibliothek (Klasse) für C # empfehlen?
Die Klasse muss gut geschrieben sein und gute Leistungen erbringen.
Können Sie eine kostenlose FTP-Bibliothek (Klasse) für C # empfehlen?
Die Klasse muss gut geschrieben sein und gute Leistungen erbringen.
Antworten:
Sie können FluentFTP in Betracht ziehen , das zuvor als System.Net.FtpClient bekannt war .
Es wird unter der MIT-Lizenz veröffentlicht und ist auf NuGet (FluentFTP) verfügbar.
Warum verwenden Sie nicht die Bibliotheken, die mit dem .NET Framework geliefert werden : http://msdn.microsoft.com/en-us/library/ms229718.aspx ?
EDIT: 2019 April von https://stackoverflow.com/users/1527/ Diese Antwort ist nicht mehr gültig. Andere Antworten werden von Microsoft gebilligt.
Sie wurden von Microsoft entwickelt, die nicht mehr empfehlen, sie zu verwenden:
Es wird nicht empfohlen, die FtpWebRequest-Klasse für Neuentwicklungen zu verwenden. Weitere Informationen und Alternativen zu FtpWebRequest finden Sie unter WebRequest sollte nicht auf GitHub verwendet werden. ( https://docs.microsoft.com/en-us/dotnet/api/system.net.ftpwebrequest?view=netframework-4.7.2 )
Die Seite "WebRequest sollte nicht verwendet werden" verweist wiederum auf diese Frage als endgültige Liste der Bibliotheken!
FtpWebRequest
Klasse funktioniert nur für einfache Transaktions-FTP-Aktionen, die dem Anforderungs- / Antwortmuster nachempfunden werden können, z. B. das Herunterladen oder Hochladen einzelner Dateien. Es ist sehr schwierig, damit Aufgaben wie das Erstellen einer FTP-Ordnerstruktur oder das Hoch- und Herunterladen in derselben Sitzung auszuführen.
edtFTPnet ist eine kostenlose, schnelle Open-Source-FTP-Bibliothek für .NET, die in C # geschrieben ist.
Ich mag Alex FTPS Client, der von einem Microsoft MVP-Namen Alex Pilotti geschrieben wurde. Es ist eine C # -Bibliothek, die Sie in Konsolen-Apps, Windows Forms, PowerShell und ASP.NET (in jeder .NET-Sprache) verwenden können. Wenn Sie eine Multithread-App haben, müssen Sie die Bibliothek so konfigurieren, dass sie synchron ausgeführt wird, aber insgesamt ein guter Client, der Ihnen höchstwahrscheinlich das bietet, was Sie benötigen.
Sie können die auf CodePlex oder http://www.enterprisedt.com/general/press/20060818.html verwenden
Ich habe gerade einen Artikel veröffentlicht , der sowohl eine FTP-Client-Klasse als auch ein FTP-Benutzersteuerelement enthält.
Sie sind einfach und nicht sehr schnell, aber sehr einfach zu bedienen und der gesamte Quellcode ist enthalten. Legen Sie das Benutzersteuerelement einfach auf einem Formular ab, damit Benutzer in FTP-Verzeichnissen Ihrer Anwendung navigieren können.
Nach vielen Nachforschungen in derselben Ausgabe fand ich diese äußerst praktisch: https://github.com/flagbug/FlagFtp
Zum Beispiel (versuchen Sie dies mit der standardmäßigen .net "Bibliothek" - es wird ein echtes Problem) -> Rekursives Abrufen aller Dateien auf dem FTP-Server:
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