Connessione SFTP con C#
SFTP è l'implementazione sicura del protocollo FTP; in pratica usa SSH come canale di comunicazione.
Oggi vediamo come connetterci, e fare l'upload di file, su un server SFTP tramite C#.
Di default non sono previste classi e oggetti preposti a questa operazione; dobbiamo rivolgerci quindi ad una libreria esterna.
Io ho usato questa: SharpSSH.
Scaricatela e aggiungetela al progetto.
Nel mio caso specifico mi serve di fare l'upload, quindi vi posto la mia classe con l'unico metodo creato:
class MySftp
{
public void upload(FileInfo[] files, string finalDir)
{
try
{
Sftp sftp = new Sftp("HOST", "USER", "PASSWORD");
sftp.Connect(22003);
string localPath = @"C:txt_import";
foreach (FileInfo f in files)
{
sftp.Put(localPath + f.ToString(), remotePath + f.Name);
}
sftp.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
Il metodo upload richiede due parametri:
- un array di FileInfo -> i file da caricare
- il percorso del server remoto su cui caricare i file
Prima di tutto ci connettiamo creando un oggetto Sftp, e passando al costruttore i classici host, user e password.
Sotto indichiamo la porta, nel qual caso non fosse quella di default.
Poi cicliamo sull'array di FileInfo, e per ognuno invochiamo il metodo put, indicando il file locale e dove salvarlo nel server remoto.
Infine chiudiamo la connessione.
Come vedete è abbastanza banale, e questo perchè la libreria si occupa di buona parte delle operazioni.
Ci sarebbero da implementare alcuni controlli, ma vi lascio a voi il compito!!
Ciao!
c# sftp ftp sharpssh fileinfo put
Commentami!