Безкоштовна бібліотека FTP [закрито]


94

Чи можете ви порекомендувати безкоштовну бібліотеку FTP (клас) для C #.

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

Відповіді:


74

Ви можете розглянути FluentFTP , раніше відомий як System.Net.FtpClient .

Він випускається під ліцензією MIT і доступний на NuGet (FluentFTP).


6
СПАСИБІ!!! Це дійсно працює дуже добре! у ньому перелічено каталог із правильним часом і датою :)))) та його швидко! зразок коду: FtpClient ftp = новий FtpClient (txtUsername.Text, txtPassword.Text, txtFTPAddress.Text); 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
Zviadi

1
Зверніть увагу, що скомпільовані бібліотеки призначені для .NET 3, але код тривіально конвертувати в 2.0
Deanna

3
Є також доступний пакет NuGet: System.Net.FtpClient
Jeroen K

1
Дещо менш легко (зараз?), Замість файлу. Завантажити, Stream s = connection. OpenRead (ім'я файлу)
Jeroen K

2
Правда, але ви можете легко додати власні методи розширення, щоб мати такий самий синтаксис, як і раніше. Ось мої: pastebin.com/FiKMrH76
Ервін Майер

20

Чому б вам не використовувати бібліотеки, що постачаються з фреймворком .NET: http://msdn.microsoft.com/en-us/library/ms229718.aspx ?

EDIT: 2019, квітень, https://stackoverflow.com/users/1527/ Ця відповідь більше не діє. Інші відповіді схвалює Microsoft.

Вони були розроблені корпорацією Майкрософт, яка більше не рекомендує використовувати їх:

Ми не рекомендуємо використовувати клас FtpWebRequest для нової розробки. Для отримання додаткової інформації та альтернатив FtpWebRequest, див. WebRequest не слід використовувати на GitHub. ( https://docs.microsoft.com/en-us/dotnet/api/system.net.ftpwebrequest?view=netframework-4.7.2 )

Сторінка "WebRequest не слід використовувати", у свою чергу, вказує на це питання як остаточний список бібліотек!


3
Я не впевнений на 100%, але чи не підключаються ці класи до кожного запиту? Якщо це так, тоді вистава буде страждати ..
Пітер

22
FtpWebRequestКлас тільки дійсно працює для простих, транзакційні FTP дії , які можуть бути змодельовані за зразком Request / Response, наприклад, завантаження або окремих файлів. Дуже важко використовувати його для виконання таких завдань, як створення структури папки FTP або завантаження та завантаження за один і той же сеанс.
Dai

1
"Повинен" - це дієве слово. Напевно, не варто витрачати свій час на налагодження прикладів FtpWebRequest, які працюють лише у ваших модульних тестах.
CZahrobsky

1
Дуже ... Поганий компонент - ви не можете легко перерахувати файли або папки, якщо ви надаєте неправильну URL-адресу - вона буде працювати без будь-яких винятків, але поверне html із повідомленням - я не знайшов жодного файлу (отже, вам потрібно проаналізуйте цей html) ... Я думаю, що Microsoft може витратити трохи часу і створити звичайну бібліотеку, а не це ...
VikciaR

2
Документація MS docs.microsoft.com/en-us/dotnet/api/… говорить не використовувати для нових проектів і вказує на github.com/dotnet/platform-compat/blob/master/docs/DE0003.md, який у Поворот вказує на це питання
Піт Кіркхем

12

edtFTPnet - це безкоштовна, швидка, відкрита FTP-бібліотека для .NET, написана на C #.


7
Датований дизайн сайту не дає мені великої впевненості в якості бібліотеки.
Jeroen K

1
Це за ліцензією LGPL. Отже, якщо ви розробляєте комерційний продукт / послугу, ви відкриваєте для себе черв'яків того, що ви можете робити, а чого не можна, що включати тощо. І безліч відповідей на SO та інші дають різні думки з цього приводу. ..
Олексій Винниченко

Я один із розробників цього програмного забезпечення. Я думав, що я просто скажу, що ми ніколи нікого не переслідували через порушення LGPL і навіть не думали розшукувати такі випадки. Основною причиною того, що ми вибрали цю ліцензію, коли бібліотека була вперше опублікована в 2003 році, було те, що LGPL була однією з таких широко відомих ліцензій. Зараз є набагато більше варіантів, і, мабуть, нам слід знайти іншу ліцензію, яка б більше відповідала нашій меті. Єдине, що ми хочемо забезпечити, це те, що ніхто не використовує наше програмне забезпечення для створення комерційного продукту, який конкурує з ним. Хто-небудь отримував пропозиції щодо менш обтяжливої ​​ліцензії?
HansA

1
До речі, якщо ваші законні люди коли-небудь це турбуються, ви можете просто придбати ліберальнішу ліцензію за 99 доларів. О, і веб-сайт також оновлений зараз :). Продукт все ще дуже живий, частково тому, що він є частиною іншого дуже успішного продукту, тобто CompleteFTP. Дякую Олексію, що вказав на цю проблему. Ми це обговоримо.
HansA

7

Мені подобається клієнт Alex FTPS, який написаний під іменем Microsoft MVP Alex Pilotti. Це бібліотека C #, яку можна використовувати в консольних додатках, Windows Forms, PowerShell, ASP.NET (будь-якою мовою .NET). Якщо у вас є багатопотокова програма, вам доведеться налаштувати бібліотеку для синхронної роботи, але загалом хороший клієнт, який, швидше за все, отримає вам те, що вам потрібно.



1

Я щойно опублікував статтю, яка представляє як клас клієнта FTP, так і елемент керування FTP.

Вони прості і не дуже швидкі, але дуже прості у використанні, і всі вихідні коди включені. Просто опустіть елемент керування користувача у форму, щоб дозволити користувачам переходити до каталогів FTP із вашої програми.


1

Після багатьох розслідувань у тому самому питанні я знайшов це надзвичайно зручним: 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);
        }
    }

flagftp використовує виклики клієнта ftp Windows. Це не хороша чи погана річ, але це означає, що бібліотека сприйнятлива до тих самих помилок, які може викликати Windows ftp-дзвінки
Джон Мотт,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.