Connessione FTP con C#
Oggi vediamo come connetterci a un server FTP tramite C#, e listare tutti i files di una directory.
C#, e in generale .NET Framework, ha già tutto ciò che ci occorre per la connessione a FTP.
L'oggetto principale della nostra classe sarà FtpWebRequest, che esegue una richiesta al server impostando diverse opzioni.
Poi con WebResponse leggiamo la risposta del server e la processiamo con uno StreamReader.
A questo punto vediamo la classe:
class FtpAmoda
{
private string strUri = "ftp://indirizzo_server/";
private string user = "username";
private string password = "password";public string[] listFiles()
{
string[] list;
try
{
StringBuilder sb = new StringBuilder();
FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(strUri);
request.UseBinary = true;
request.Credentials = new NetworkCredential(user, password);
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Proxy = null;
request.KeepAlive = false;
request.UsePassive = true;
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
while (!reader.EndOfStream)
{
string fileName = reader.ReadLine();
if (fileName.EndsWith(".txt"))
{
sb.Append(fileName.ToString()).Append("\n");
}
}
sb.Remove(sb.ToString().LastIndexOf('\n'), 1);
reader.Close();
response.Close();
return sb.ToString().Split('\n');
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
list = null;
return list;
}
}
}
Come vedete il metodo restituisce un array di string, che corrispondono ai files.
Diciamo che in generale non c'è molto da dire.
Tra le opzioni di FtpWebReuqest indichiamo le credenziali di accesso, l'indirizzo del server, ecc....
La mia unica "particolarità" è che nel while cerco solo i file che hanno estensione txt; voi impostatelo come volete a seconda delle vostre esigenze.
In un prossimo articolo vedremo come fare il download dei files listati.
Ciao!
c# c# ftp ftpwebrequest networkcredentials
1 Commenti
Premetto che non so programmare e che capisco un terzo di quello che dite voi esperti, ma avrei bisogno di capire una cosa. ho più o meno seguito quanto hai indicato tu sopra e sembra funzionare, adesso il mio dubbio è come faccio a muovermi tra le cartelle presenti nel server FTP a cui mi sono collegato? io non devo andare nella root del server, ma in una cartella specifica. avevo pensato di fare così string strUri = \"ftp://server/cartella/cartella2/\"; ma non funziona mi da un errore.
14/07/2014