Бесплатная FTP-библиотека

Вы можете рекомендовать бесплатную FTP-библиотеку (класс) для С#.

Класс должен быть хорошо написан и иметь хорошую производительность.

Ответ 2

Почему бы вам не использовать библиотеки, поставляемые с платформой .NET: 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 не должен использоваться", в свою очередь, указывает на этот вопрос как на окончательный список библиотек!

Ответ 3

edtFTPnet - бесплатная, быстрая библиотека с открытым исходным кодом для .NET, написанная на С#.

Ответ 4

Мне нравится Alex FTPS Client, который написан именем Microsoft MVP Alex Pilotti. Это библиотека С#, которую вы можете использовать в консольных приложениях, Windows Forms, PowerShell, ASP.NET(на любом языке .NET). Если у вас многопоточное приложение, вам придется настраивать библиотеку для запуска синхронно, но в целом хороший клиент, который, скорее всего, получит вам то, что вам нужно.

Ответ 6

Я только опубликовал статью, в которой представлены как клиентский клиент FTP, так и пользовательский контроль FTP.

Они просты и не очень быстры, но очень просты в использовании и включены весь исходный код. Просто опустите элемент управления пользователя в форму, чтобы пользователи могли перемещаться по FTP-каталогам из вашего приложения.

Ответ 7

После многих исследований в том же номере я нашел, что это очень удобно: https://github.com/flagbug/FlagFtp

Например (попробуйте сделать это со стандартной .net "library" - это будет настоящая боль) → Рекурсивно восстанавливать все файлы на 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);
        }
    }