Inserito da: mandev | Settembre 22, 2008

Gestione FTP in C# con il FrameWork 2.0

Con l’avvento del FrameWork 2.0 si è andata ad aggiungere una classe molto utile per noi programmatori: la FtpWebRequest. In passato per interagire via FTP con dei server bisognava usare i socket e spesso la cosa non era scontata.
Con questa classe adesso è davvero molto semplice interagire via FTP con i server ed effettuare tutte le operazioni che vogliamo.
Oggi andiamo a creare una classe che si occuperà di uplodare un file, scaricarlo e poi cancellarlo.
Il .cs che trovato in allegato contiene due classi: la prima è la FtpState classe fornita direttamente dal SDK del Frame Work e poi la nostra vera e propria classe che compierà le operazioni desiderate. In questo caso l’abbiamo chiamata PepMindFtp.
Andiamo ad analizzare i tre metodi (i metodi sono tutti statici):

StartIt: in modo asincrono si occupa di uplodare un file sul server

/// <summary>
/// Metodo per l'upload di uno specifico file
/// </summary>
/// <param name="Url">ftp://www.miosito.it/fld/file.txt</param>
/// <param name="fileLocalName">nome del file locale che uplodiamo</param>
/// <param name="UserName">utente FTP</param>
/// <param name="Password">password FTP</param>

/// <summary>
/// Metodo per il download specifico di un file
/// </summary>
/// <param name=“Url”>indirizzo ftp correttamente impostato://www.miosito.it/fld/file.txt</param>
/// <param name=“UserName”>utente FTP</param>
/// <param name=“Password”>password FTP</param>
/// <returns>Ritorna uno stream di dati</returns>

DeleteFile: elimina un file specifico sul server

/// <summary>
/// Metodoper la cancellazione di un file
/// </summary>
/// <param name="Url">indirizzo ftp correttamente impostato://www.miosito.it/fld/file.txt</param>
/// <param name="UserName">utente FTP</param>
/// <param name="Password">password FTP</param>
/// <returns>Booleano con l'esito dell'operazione</returns>

Il primo metodo opera asincronicamente, ma va chiaramente implementata la parte applicativa che lo possa gestire. Vediamo un piccolo esempio:
In questa applicazione ho necessità di uplodare i file da un’applicazione Windows Form su un server remoto. Le soluzioni potevano essere due:
La prima era quella di storare dentro Sql Server lo stream dell’immagine. Questa soluzione si però poi rivelata poco performante. La seconda è quella di salvare su un server FTP la nostra immagine.Associamo ad un bottone il nostro evento.

private void button2_Click(object sender, EventArgs e){
 
  IAsyncResult ar = null;
 
  AsyncCallback __as = new AsyncCallback(allega);
 
  __as.BeginInvoke(ar, null, null);
 
}
 
private void allega(IAsyncResult ar){
 
  pictureBox11.Image= Image.FromFile(ConfigurationSettings.AppSettings["WAIT"]);
 
  //visualizziamo nella nostra picturebox un file di loading… 
  //estraiamo il nome del file dalla sua path completa
 
  string __fileName = this.txt_FileAttach.Text.Substring(this.txt_FileAttach.Text.LastIndexOf("\") +1);
 
  string __fileFtp =  "ftp://www.mioserver/miacartella/" + __fileName
 
  PepMindFtp.StartIt(__fileFtp, txt_FileAttach.Text, "myUser", "myPwd");
 
}

A questo punto possiamo facilmente visualizzare i file in modo asincrono oppure sincrono.
Il vantaggio è che l’upload dei file è gestito separatamente e quindi la vostra applicazione è libera di fare altre operazioni.
Lo stesso vale per gli altri due metodi.

Scarica il sorgente in PDF facendo click qui: pepmindftp


Lascia un commento

La tua risposta:

Categorie