Kostenlose FTP-Bibliothek [geschlossen]

93

Können Sie eine kostenlose FTP-Bibliothek (Klasse) für C # empfehlen?

Die Klasse muss gut geschrieben sein und gute Leistungen erbringen.

Josef Van Zyl
quelle

Antworten:

73

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.

Erwin Mayer
quelle
6
DANKE!!! Das funktioniert wirklich sehr gut! es listet Verzeichnis mit korrekter Datums- und Uhrzeitangabe :)))) und es ist schnell! Beispielcode: FtpClient ftp = neuer FtpClient (txtUsername.Text, txtPassword.Text, txtFTPAddress.Text); 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
Zviadi
1
Beachten Sie, dass die kompilierten Bibliotheken für .NET 3 sind, aber der Code für die Konvertierung in 2.0 trivial ist
Deanna
3
Es ist auch als NuGet-Paket verfügbar: System.Net.FtpClient
Jeroen K
1
Etwas weniger einfach (jetzt?) Anstelle von file.Download, Stream s = connection.OpenRead (Dateiname)
Jeroen K
2
Stimmt, aber Sie können ganz einfach Ihre eigenen Erweiterungsmethoden hinzufügen, um dieselbe Syntax wie zuvor zu haben. Hier sind meine: pastebin.com/FiKMrH76
Erwin Mayer
20

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!

0fnt
quelle
3
Ich bin nicht 100% sicher, aber verbinden sich diese Klassen nicht bei jeder Anfrage erneut? Wenn das der Fall ist, würde die Leistung leiden ..
Peter
22
Die FtpWebRequestKlasse 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.
Dai
1
"Sollte" ist das operative Wort. Es lohnt sich wahrscheinlich nicht, FtpWebRequest-Beispiele zu debuggen, die nur in Ihren Komponententests funktionieren.
CZahrobsky
1
Sehr ... Schlechte Komponente - Sie können Dateien oder Ordner nicht einfach auflisten, wenn Sie eine schlechte URL angeben - sie wird ausnahmslos ausgeführt, gibt jedoch HTML mit der Meldung zurück - Ich habe keine Datei gefunden (Sie müssen also parse that html) ... Ich denke, Microsoft kann einige Zeit damit verbringen, eine normale Bibliothek zu erstellen, und nicht diese ...
VikciaR
2
Die MS-Dokumentation docs.microsoft.com/en-us/dotnet/api/… sagt, dass sie nicht für neue Projekte verwendet werden soll, und verweist auf github.com/dotnet/platform-compat/blob/master/docs/DE0003.md , in dem Wendepunkte zu dieser Frage
Pete Kirkham
12

edtFTPnet ist eine kostenlose, schnelle Open-Source-FTP-Bibliothek für .NET, die in C # geschrieben ist.

Bruce Blackshaw
quelle
7
Das veraltete Design der Website gibt mir nicht viel Vertrauen in die Qualität der Bibliothek.
Jeroen K
1
Es ist unter LGPL-Lizenz. Wenn Sie also ein kommerzielles Produkt / eine kommerzielle Dienstleistung entwickeln, öffnen Sie eine Dose Würmer darüber, was Sie tun können und was nicht, was Sie einbeziehen müssen usw. Und mehrere Antworten auf SO und andere geben unterschiedliche Meinungen zu diesem Thema ab. ..
Oleksii Vynnychenko
Ich bin einer der Entwickler dieser Software. Ich dachte, ich würde mich einfach einmischen, weil wir noch nie jemanden wegen LGPL-Verstößen verfolgt haben oder sogar daran gedacht haben, nach solchen Fällen zu suchen. Der Hauptgrund, warum wir uns für diese Lizenz entschieden haben, als die Bibliothek 2003 zum ersten Mal veröffentlicht wurde, war, dass LGPL eine der wenigen bekannten Lizenzen war. Es gibt jetzt viel mehr Optionen und wir sollten wahrscheinlich eine andere Lizenz finden, die besser zu unserem Ziel passt. Das einzige, was wir sicherstellen möchten, ist, dass niemand unsere Software verwendet, um ein kommerzielles Produkt zu erstellen, das damit konkurriert. Hat jemand Vorschläge für eine weniger belastende Lizenz?
HansA
1
Übrigens, wenn Ihre juristischen Personen sich jemals Sorgen machen, können Sie einfach eine liberalere Lizenz für 99 US-Dollar erwerben. Oh, und auch die Website wurde jetzt aktualisiert :). Das Produkt ist noch sehr lebendig, auch weil es Teil eines anderen sehr erfolgreichen Produkts ist, dh CompleteFTP. Vielen Dank an Oleksii für den Hinweis auf dieses Problem. Wir werden darüber diskutieren.
HansA
7

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.

John C.
quelle
1

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.

Jonathan Wood
quelle
1

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);
        }
    }
Stephan
quelle
flagftp verwendet die Windows-FTP-Clientaufrufe. Dies ist keine gute oder schlechte Sache, aber es bedeutet, dass die Bibliothek für die gleichen Fehler anfällig ist, die die Windows-FTP-Aufrufe auslösen können
John Mott