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.