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>
DownloadFile: scarica dal server il file sotto forma di stream di byte
/// <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 è gestita separatamente e quindi la vostra applicazione è libera di fare altre operazioni.
Lo stesso vale per gli altri due metodi.
CS contenente le classi necessario al funzionamento dell’applicazione






























