Можете ли вы порекомендовать бесплатную библиотеку (класс) FTP для C #.
Класс должен быть хорошо написан и иметь хорошую производительность.
Вы можете рассмотреть FluentFTP , ранее известный как System.Net.FtpClient .
Он выпущен под лицензией MIT и доступен на NuGet (FluentFTP).
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
Почему бы вам не использовать библиотеки, входящие в состав .NET framework: http://msdn.microsoft.com/en-us/library/ms229718.aspx ?
РЕДАКТИРОВАТЬ: апрель 2019 г., автор https://stackoverflow.com/users/1527/ Этот ответ больше недействителен. Другие ответы одобрены Microsoft.
Они были разработаны Microsoft, которая больше не рекомендует их использовать:
Страница «WebRequest not be used», в свою очередь, указывает на этот вопрос как на исчерпывающий список библиотек!
источник
FtpWebRequest
класс действительно работает только для простых транзакционных FTP-действий, которые можно смоделировать по шаблону запроса / ответа, например, для загрузки или выгрузки отдельных файлов. Его очень сложно использовать для выполнения таких задач, как создание структуры папок FTP или загрузка и загрузка в одном сеансе.edtFTPnet - это бесплатная, быстрая FTP-библиотека с открытым исходным кодом для .NET, написанная на C #.
источник
Мне нравится Alex FTPS Client, который написан MVP Майкрософт по имени Алекс Пилотти. Это библиотека C #, которую вы можете использовать в консольных приложениях, Windows Forms, PowerShell, ASP.NET (на любом языке .NET). Если у вас есть многопоточное приложение, вам придется настроить библиотеку для синхронного запуска, но в целом это хороший клиент, который, скорее всего, предоставит вам то, что вам нужно.
источник
Вы можете использовать их на CodePlex или http://www.enterprisedt.com/general/press/20060818.html
источник
Я только что опубликовал статью, в которой представлены как класс клиента FTP, так и пользовательский элемент управления FTP.
Они просты и не очень быстрые, но очень просты в использовании, и весь исходный код включен. Просто поместите пользовательский элемент управления в форму, чтобы пользователи могли перемещаться по каталогам FTP из вашего приложения.
источник
После долгого исследования того же вопроса я обнаружил, что это чрезвычайно удобно: https://github.com/flagbug/FlagFtp
Например (попробуйте сделать это со стандартной "библиотекой" .net - это будет настоящей головной болью) -> Рекурсивное извлечение всех файлов на 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); } }
источник