Pouvez-vous recommander une bibliothèque FTP gratuite (classe) pour C #.
La classe doit être bien écrite et avoir de bonnes performances.
Pouvez-vous recommander une bibliothèque FTP gratuite (classe) pour C #.
La classe doit être bien écrite et avoir de bonnes performances.
Réponses:
Vous pouvez envisager FluentFTP , anciennement System.Net.FtpClient .
Il est publié sous la licence MIT 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. 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!
FtpWebRequest
classe 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.
edtFTPnet est une bibliothèque FTP gratuite, rapide et open source pour .NET, écrite en C #.
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.
Vous pouvez utiliser ceux sur CodePlex ou http://www.enterprisedt.com/general/press/20060818.html
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.
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);
}
}
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