Libreria FTP gratuita [chiusa]


Risposte:


74

Puoi prendere in considerazione FluentFTP , precedentemente noto come System.Net.FtpClient .

È rilasciato con licenza MIT e disponibile su NuGet (FluentFTP).


6
GRAZIE!!! Funziona davvero molto bene! elenca la directory con la data e l'ora corretta :)))) ed è veloce! codice di esempio: FtpClient ftp = new 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
Nota che le librerie compilate sono per .NET 3 ma il codice è banale da convertire in 2.0
Deanna

3
È anche disponibile come pacchetto NuGet: System.Net.FtpClient
Jeroen K

1
Un po 'meno facile (ora?), Invece di file.Download, Stream s = connection.OpenRead (filename)
Jeroen K

2
Vero, ma puoi facilmente aggiungere i tuoi metodi di estensione per avere la stessa sintassi di prima. Ecco i miei: pastebin.com/FiKMrH76
Erwin Mayer

20

Perché non utilizzi le librerie fornite con .NET Framework: http://msdn.microsoft.com/en-us/library/ms229718.aspx ?

EDIT: 2019 aprile da https://stackoverflow.com/users/1527/ Questa risposta non è più valida. Altre risposte sono approvate da Microsoft.

Sono stati progettati da Microsoft che non consiglia più di utilizzarli:

Si sconsiglia di utilizzare la classe FtpWebRequest per nuovi sviluppi. Per ulteriori informazioni e alternative a FtpWebRequest, vedere WebRequest non deve essere utilizzato su GitHub. ( https://docs.microsoft.com/en-us/dotnet/api/system.net.ftpwebrequest?view=netframework-4.7.2 )

La pagina 'WebRequest non dovrebbe essere usato' a sua volta punta a questa domanda come l'elenco definitivo delle biblioteche!


3
Non sono sicuro al 100%, ma quelle classi non si ricollegano a ogni richiesta? Se questo è il caso, la performance ne risentirebbe ..
Peter

22
La FtpWebRequestclasse funziona davvero solo per azioni FTP semplici e transazionali che possono essere modellate sul modello di richiesta / risposta, come il download o il caricamento di singoli file. È molto difficile utilizzarlo per eseguire attività come creare una struttura di cartelle FTP o caricare e scaricare nella stessa sessione.
Dai

1
"Dovrebbe" è la parola chiave. Probabilmente non vale la pena dedicare del tempo a eseguire il debug di esempi di FtpWebRequest che funzionano solo nei test unitari.
CZahrobsky

1
Molto ... Componente difettoso: non è possibile elencare facilmente file o cartelle, se si fornisce un URL errato - verrà eseguito senza eccezioni, ma restituirà html con messaggio - Non ho trovato alcun file (quindi, è necessario parse that html) ... Penso che Microsoft possa dedicare un po 'di tempo e creare una libreria normale e non questa ...
VikciaR

2
La documentazione MS docs.microsoft.com/en-us/dotnet/api/… dice di non usare per nuovi progetti e punta a github.com/dotnet/platform-compat/blob/master/docs/DE0003.md che in girare i punti a questa domanda
Pete Kirkham

12

edtFTPnet è una libreria FTP gratuita, veloce e open source per .NET, scritta in C #.


7
Il design datato del sito non mi dà molta fiducia sulla qualità della libreria.
Jeroen K,

1
È sotto licenza LGPL. Quindi, se stai sviluppando un prodotto / servizio commerciale, stai aprendo quella scatola di vermi su ciò che puoi fare e cosa non puoi, cosa includere, ecc. E più risposte su SO e altri danno opinioni diverse su questo argomento. ..
Oleksii Vynnychenko

Sono uno degli sviluppatori di questo software. Ho pensato di aggiungere che non abbiamo mai perseguito nessuno per violazioni della LGPL e nemmeno abbiamo pensato di cercare casi del genere. Il motivo principale per cui abbiamo scelto questa licenza quando la libreria è stata pubblicata per la prima volta nel 2003 è che LGPL era una delle poche licenze così ampiamente conosciute in circolazione. Ci sono molte più opzioni ora e probabilmente dovremmo trovare un'altra licenza che si adatti meglio al nostro scopo. L'unica cosa che vogliamo garantire è che nessuno utilizzi il nostro software per creare un prodotto commerciale che sia in concorrenza con esso. Qualcuno ha suggerimenti per una licenza meno onerosa?
HansA

1
A proposito, se i tuoi legali sono mai preoccupati, puoi semplicemente acquistare una licenza più liberale per $ 99. Oh, e anche il sito web è stato aggiornato ora :). Il prodotto è ancora molto vivo, in parte perché fa parte di un altro prodotto di grande successo, ovvero CompleteFTP. Grazie Oleksii per aver segnalato questo problema. Ne discuteremo.
HansA

7

Mi piace Alex FTPS Client che è scritto da un nome Microsoft MVP Alex Pilotti. È una libreria C # che puoi usare nelle app console, Windows Form, PowerShell, ASP.NET (in qualsiasi linguaggio .NET). Se hai un'app multithread, dovrai configurare la libreria in modo che venga eseguita in modo sincrono, ma nel complesso un buon client che molto probabilmente ti fornirà ciò di cui hai bisogno.



1

Ho appena pubblicato un articolo che presenta sia una classe client FTP che un controllo utente FTP.

Sono semplici e non molto veloci, ma sono molto facili da usare e tutto il codice sorgente è incluso. È sufficiente rilasciare il controllo utente su un modulo per consentire agli utenti di navigare nelle directory FTP dall'applicazione.


1

Dopo molte indagini sullo stesso numero, ho trovato questo estremamente conveniente: https://github.com/flagbug/FlagFtp

Ad esempio (prova a farlo con la "libreria" standard .net - sarà un vero dolore) -> Recupero ricorsivo di tutti i file sul server 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 utilizza le chiamate del client ftp di Windows. Questa non è una cosa buona o cattiva, ma significa che la libreria è suscettibile agli stessi errori che le chiamate ftp di Windows possono lanciare
John Mott
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.