sshnet sharp renci descargar conexion archivos c# ftp sftp ftpwebrequest

sharp - cómo descargar un archivo comprimido(.zip) a través de FTP usando c#?



sharp ssh (5)

El espacio de nombres System.Net de .NET Framework ofrece la clase FTPWebRequest. Aquí hay un artículo que explica cómo usarlo:

http://www.vcskicks.com/download-file-ftp.php

¿Cómo descargar el formato de archivo .zip usando el código c #?

Aquí está el código, estoy usando para descargar. Solo para resaltar, si descargo el archivo .txt, funciona bien. Si descargo el archivo .zip, descarga el archivo .zip pero no puedo abrirlo. Se queja de que .zip está en formato incorrecto. Tengo dudas sobre cómo estoy escribiendo el archivo en la unidad local.

¿Ayuda?

string ftpServerIP = FTPServer; string ftpUserID = FTPUser; string ftpPassword = FTPPwd; FileInfo fileInf = new FileInfo(FileName); string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name; FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(uri); //new Uri("ftp://" + ftpServerIP + DestinationFolder + fileInf.Name)); reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword); reqFTP.EnableSsl = true; reqFTP.KeepAlive = false; reqFTP.UseBinary = true; //reqFTP.UsePassive = true; reqFTP.Method = WebRequestMethods.Ftp.DownloadFile; ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications); //Stream strm = reqFTP.GetRequestStream(); StreamReader reader = new StreamReader(reqFTP.GetResponse().GetResponseStream()); StreamWriter writer = new StreamWriter(Path.Combine(FolderToWriteFiles, FileName), false); writer.Write(reader.ReadToEnd()); return true;





using System.Net; // ... new WebClient().DownloadFile("ftp://ftp.someurl.com/file.zip", "C://downloadedFile.zip");

Responda a la pregunta actualizada:

La forma en que está guardando la transmisión en el disco es incorrecta. Está tratando el flujo como una secuencia de caracteres, lo que corrompe el archivo ZIP en el proceso. Abra un FileStream lugar de un StreamWriter y copie el valor de retorno GetResponseStream() directamente en ese FileStream utilizando algo así como mi función CopyStream desde aquí .