Pouvez-vous recommander une bibliothèque FTP gratuite (classe) pour C #.
Le cours doit être bien écrit et avoir de bonnes performances.
Vous pouvez envisager FluentFTP , précédemment appelé System.Net.FtpClient .
Il est publié sous La MIT Licence et disponible sur NuGet (FluentFTP).
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!
edtFTPnet est une bibliothèque FTP source libre et rapide pour .NET, écrite en C #.
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.
Vous pouvez utiliser celles sur CodePlex ou http://www.enterprisedt.com/general/press/20060818.html
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);
}
}
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.