web-dev-qa-db-fra.com

Bibliothèque FTP gratuite

Pouvez-vous recommander une bibliothèque FTP gratuite (classe) pour C #.

Le cours doit être bien écrit et avoir de bonnes performances.

87
Robin

Vous pouvez envisager FluentFTP , précédemment appelé System.Net.FtpClient .

Il est publié sous La MIT Licence et disponible sur NuGet (FluentFTP).

64
Erwin Mayer

Pourquoi n'utilisez-vous pas les bibliothèques fournies avec le framework .NET: http://msdn.Microsoft.com/en-us/library/ms229718.aspx ?

EDIT: avril 2019 par https://stackoverflow.com/users/1527/ Cette réponse n'est plus valide. Les autres réponses sont approuvées par Microsoft.

Ils ont été conçus par Microsoft qui ne recommande plus leur utilisation:

Nous vous déconseillons d'utiliser la classe FtpWebRequest pour les nouveaux développements. Pour plus d'informations et des alternatives à FtpWebRequest, voir WebRequest ne doit pas être utilisé sur GitHub. ( https://docs.Microsoft.com/en-us/dotnet/api/system.net.ftpwebrequest?view=netframework-4.7.2 )

La page "WebRequest ne devrait pas être utilisée" pointe à son tour vers cette question comme la liste définitive des bibliothèques!

21
0fnt

edtFTPnet est une bibliothèque FTP source libre et rapide pour .NET, écrite en C #.

12
Bruce Blackshaw

J'aime Alex FTPS Client qui est écrit par un nom de MVP Microsoft, Alex Pilotti. C'est une bibliothèque C # que vous pouvez utiliser dans les applications console, Windows Forms, PowerShell, ASP.NET (dans n'importe quel langage .NET). Si vous avez une application multithread, vous devrez configurer la bibliothèque pour qu'elle s'exécute de manière synchrone, mais globalement, c'est un bon client qui vous donnera probablement ce dont vous avez besoin.

7
John C
5
Kane

Après de nombreuses enquêtes dans le même numéro, j’ai trouvé celui-ci extrêmement pratique: https://github.com/flagbug/FlagFtp

Par exemple (essayez de faire cela avec la "bibliothèque" standard .net - ce sera très pénible) -> Récupérer récursivement tous les fichiers sur le serveur 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);
        }
    }
1
Stephan

Je viens de posté un article qui présente à la fois une classe de client FTP et un contrôle utilisateur FTP.

Ils sont simples et ne sont pas très rapides, mais ils sont très faciles à utiliser et tout le code source est inclus. Il suffit de déposer le contrôle de l'utilisateur sur un formulaire pour permettre aux utilisateurs de naviguer dans les répertoires FTP à partir de votre application.

1
Jonathan Wood