Saltar al contenido

Cargar archivos C# SFTP

Luego de investigar con especialistas en la materia, programadores de deferentes ramas y maestros hemos dado con la respuesta al dilema y la dejamos plasmada en esta publicación.

Solución:

El mejor paquete de biblioteca/NuGet que encontré fue SSH.NET de Renci. Abra Nuget Package Manager e instálelo en su proyecto.

La carga se puede hacer con un archivo almacenado o un byte[] expediente.


Cargar byte[] expediente

// you could pass the host, port, usr, and pass as parameters
public void FileUploadSFTP()

    var host = "whateverthehostis.com";
    var port = 22;
    var username = "username";
    var password = "passw0rd";
    
    // http://stackoverflow.com/questions/18757097/writing-data-into-csv-file/39535867#39535867
    byte[] csvFile = DownloadCSV(); // Function returns byte[] csv file

    using (var client = new SftpClient(host, port, username, password))
    
        client.Connect();
        if (client.IsConnected)
        
            Debug.WriteLine("I'm connected to the client");

            using (var ms = new MemoryStream(csvFile))
            
                client.BufferSize = (uint)ms.Length; // bypass Payload error large files
                client.UploadFile(ms, GetListFileName());
            
        
        else
        
            Debug.WriteLine("I couldn't connect");
        
    


Subir desde un archivo almacenado

Este fue el sitio que utilicé como recurso para comenzar: http://blog.deltacode.be/2012/01/05/uploading-a-file-using-sftp-in-c-sharp/

Está escrito para cargar archivos.

// you could pass the host, port, usr, pass, and uploadFile as parameters
public void FileUploadSFTP()

    var host = "whateverthehostis.com";
    var port = 22;
    var username = "username";
    var password = "passw0rd";

    // path for file you want to upload
    var uploadFile = @"c:yourfilegoeshere.txt"; 

    using (var client = new SftpClient(host, port, username, password))
    
        client.Connect();
        if (client.IsConnected)
        
            Debug.WriteLine("I'm connected to the client");

            using (var fileStream = new FileStream(uploadFile, FileMode.Open))
            
                
                client.BufferSize = 4 * 1024; // bypass Payload error large files
                client.UploadFile(fileStream, Path.GetFileName(uploadFile));
            
        
        else
        
            Debug.WriteLine("I couldn't connect");
        
    


Esperemos que esto sea útil para cualquiera que intente cargar un archivo usando SFTP en C#.

Lo que intenta hacer aquí es establecer una conexión FTPS que no sea una conexión SFTP. Él EnableSsl La opción solo activa FTP sobre TLS (entonces FTPS). Utiliza el puerto 21 para conectarse al servidor.

Si realmente ha activado SFTP en FileZilla, debe usar una conexión SSH en el puerto 22 para conectarse al servidor (SFTP = SSH File Transfer Protocol). El método más sencillo para obtener esto debería ser mediante SharpSSH.

También puede echar un vistazo a esta pregunta.

Recuerda dar visibilidad a esta sección si te valió la pena.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *