Libre biblioteca de FTP

¿Puede recomendar una biblioteca de FTP gratuita (clase) para C #.

La clase debe estar bien escrita y tener un buen rendimiento.

Puede considerar FluentFTP , anteriormente conocido como System.Net.FtpClient .

Se lanzó bajo la licencia MIT y está disponible en NuGet (FluentFTP).

¿Por qué no utiliza las bibliotecas que vienen con .NET Framework ?: http://msdn.microsoft.com/en-us/library/ms229718.aspx

Están diseñados por Microsoft y deberían funcionar de manera bastante eficiente.

edtFTPnet es una biblioteca FTP gratuita, rápida y de código abierto para .NET, escrita en C #.

Me gusta Alex FTPS Client, que está escrito por un nombre MVP de Microsoft, Alex Pilotti. Es una biblioteca C # que puede usar en aplicaciones de consola, Windows Forms, PowerShell, ASP.NET (en cualquier idioma .NET). Si tiene una aplicación multiproceso, deberá configurar la biblioteca para que se ejecute sincrónicamente, pero, en general, un buen cliente que probablemente obtendrá lo que necesita.

Acabo de publicar un artículo que presenta una clase de cliente FTP y un control de usuario de FTP.

Son simples y no son muy rápidos, pero son muy fáciles de usar y se incluye todo el código fuente. Simplemente suelte el control del usuario en un formulario para permitir a los usuarios navegar por directorios FTP desde su aplicación.

Después de mucha investigación sobre el mismo problema, encontré este muy conveniente: https://github.com/flagbug/FlagFtp

Por ejemplo (intente hacer esto con la “biblioteca” .net estándar – será un verdadero dolor) -> Retreving recursivamente todos los archivos en el servidor FTP:

  public IEnumerable GetFiles(string server, string user, string password) { var credentials = new NetworkCredential(user, password); var baseUri = new Uri("ftp://" + server + "/"); var files = new List(); AddFilesFromSubdirectory(files, baseUri, credentials); return files; } private void AddFilesFromSubdirectory(List 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); } }