Можете ли вы порекомендовать бесплатную библиотеку (класс) FTP для C #.
Класс должен быть хорошо написан и иметь хорошую производительность.
Можете ли вы порекомендовать бесплатную библиотеку (класс) FTP для C #.
Класс должен быть хорошо написан и иметь хорошую производительность.
Ответы:
Вы можете рассмотреть FluentFTP , ранее известный как System.Net.FtpClient .
Он выпущен под лицензией MIT и доступен на NuGet (FluentFTP).
Почему бы вам не использовать библиотеки, входящие в состав .NET framework: http://msdn.microsoft.com/en-us/library/ms229718.aspx ?
РЕДАКТИРОВАТЬ: апрель 2019 г., автор https://stackoverflow.com/users/1527/ Этот ответ больше недействителен. Другие ответы одобрены Microsoft.
Они были разработаны Microsoft, которая больше не рекомендует их использовать:
Мы не рекомендуем вам использовать класс FtpWebRequest для новых разработок. Дополнительные сведения и альтернативы FtpWebRequest см. В разделе WebRequest не следует использовать на GitHub. ( https://docs.microsoft.com/en-us/dotnet/api/system.net.ftpwebrequest?view=netframework-4.7.2 )
Страница «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);
}
}
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