Bibliothèque FTP gratuite [fermée]

94

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

La classe doit être bien écrite et avoir de bonnes performances.

Josef Van Zyl
la source

Réponses:

74

Vous pouvez envisager FluentFTP , anciennement System.Net.FtpClient .

Il est publié sous la licence MIT et disponible sur NuGet (FluentFTP).

Erwin Mayer
la source
6
MERCI!!! Cela fonctionne vraiment très bien! il répertorie le répertoire avec l'heure correcte :)))) et c'est rapide! exemple de code: FtpClient ftp = new 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
Notez que les bibliothèques compilées sont pour .NET 3 mais le code est simple à convertir en 2.0
Deanna
3
Est également disponible dans le package NuGet: System.Net.FtpClient
Jeroen K
1
Un peu moins facile (maintenant?), Au lieu de file.Download, Stream s = connection.OpenRead (filename)
Jeroen K
2
C'est vrai, mais vous pouvez facilement ajouter vos propres méthodes d'extension pour avoir la même syntaxe qu'auparavant. Voici les miens: pastebin.com/FiKMrH76
Erwin Mayer
20

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. D'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, consultez 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 doit pas être utilisé» à son tour pointe vers cette question comme la liste définitive des bibliothèques!

0fnt
la source
3
Je ne suis pas sûr à 100% mais ces classes ne se reconnectent-elles pas à chaque demande? Si tel est le cas, la performance en souffrirait ..
Peter
22
La FtpWebRequestclasse ne fonctionne vraiment que pour des actions FTP transactionnelles simples qui peuvent être modélisées sur le modèle Requête / Réponse, comme le téléchargement ou le téléchargement de fichiers individuels. Il est très difficile de l'utiliser pour effectuer des tâches telles que la création d'une structure de dossiers FTP ou le téléchargement et le téléchargement dans la même session.
Dai le
1
«Devrait» est le mot clé. Cela ne vaut probablement pas la peine de déboguer les exemples FtpWebRequest qui ne fonctionnent que dans vos tests unitaires.
CZahrobsky
1
Très ... Mauvais composant - vous ne pouvez pas facilement lister les fichiers ou les dossiers, si vous fournissez une mauvaise URL - il fonctionnera sans aucune exception, mais retournera html avec un message - Je n'ai trouvé aucun fichier (donc, vous devez parse that html) ... Je pense que Microsoft peut passer du temps et créer une bibliothèque normale et pas celle-ci ...
VikciaR
2
La documentation MS docs.microsoft.com/en-us/dotnet/api/… dit de ne pas utiliser pour les nouveaux projets, et pointe vers github.com/dotnet/platform-compat/blob/master/docs/DE0003.md qui dans Turn points à cette question
Pete Kirkham
12

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

Bruce Blackshaw
la source
7
La conception datée du site ne me donne pas beaucoup confiance en la qualité de la bibliothèque.
Jeroen K
1
C'est sous licence LGPL. Donc, si vous développez un produit / service commercial, vous ouvrez une boîte de vers de ce que vous pouvez faire et ce que vous ne pouvez pas, ce qu'il faut inclure, etc. Et de multiples réponses sur SO et d'autres donnent des opinions différentes à ce sujet. ..
Oleksii Vynnychenko
Je suis l'un des développeurs de ce logiciel. Je pensais simplement que nous n'avions jamais poursuivi personne pour des violations de la LGPL ou même pensé à rechercher de tels cas. La principale raison pour laquelle nous avons choisi cette licence lors de la première publication de la bibliothèque en 2003 était que LGPL était l'une des seules licences de ce type largement connues. Il y a beaucoup plus d'options maintenant et nous devrions probablement trouver une autre licence qui correspond mieux à notre objectif. La seule chose que nous voulons nous assurer, c'est que personne n'utilise notre logiciel pour créer un produit commercial qui lui fait concurrence. Quelqu'un a-t-il des suggestions pour une licence moins onéreuse?
HansA
1
Au fait, si vos juristes s'inquiètent à ce sujet, vous pouvez simplement acheter une licence plus libérale pour 99 $. Oh, et aussi le site Web a été mis à jour maintenant :). Le produit est toujours très vivant, en partie parce qu'il fait partie d'un autre produit très réussi, à savoir CompleteFTP. Merci Oleksii d'avoir signalé ce problème. Nous en discuterons.
HansA
7

J'aime Alex FTPS Client qui est écrit par un Microsoft MVP nommé Alex Pilotti. C'est une bibliothèque C # que vous pouvez utiliser dans les applications de 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 dans l'ensemble, c'est un bon client qui vous fournira très probablement ce dont vous avez besoin.

Jean C
la source
1

Je viens de publier 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 sont très faciles à utiliser et tout le code source est inclus. Déposez simplement le contrôle utilisateur sur un formulaire pour permettre aux utilisateurs de naviguer dans les répertoires FTP à partir de votre application.

Jonathan Wood
la source
1

Après de nombreuses recherches sur le même problème, 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 vraiment 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);
        }
    }
Stephan
la source
flagftp utilise les appels client ftp de Windows. Ce n'est pas une bonne ou une mauvaise chose, mais cela signifie que la bibliothèque est sensible aux mêmes erreurs que les appels FTP Windows peuvent générer
John Mott