如何使用c#通过FTP下载压缩文件(.zip)?

Jan*_*ngo 4 c# ftp sftp ftpwebrequest

如何使用c#代码下载.zip文件格式?

这是代码,我用来下载.只是为了突出显示,如果我下载.txt文件,它工作正常.如果我下载.zip文件,它会下载.zip文件但我无法打开它.它抱怨.zip的格式不正确.我怀疑我如何在本地驱动器上写回文件.

救命?

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; 
Run Code Online (Sandbox Code Playgroud)

Meh*_*ari 9

using System.Net;
// ...

new WebClient().DownloadFile("ftp://ftp.someurl.com/file.zip",
                             "C:\\downloadedFile.zip");
Run Code Online (Sandbox Code Playgroud)

回答更新的问题:

将流保存到磁盘的方式是错误的.您将流视为字符序列,这会破坏流程中的ZIP文件.打开一个FileStream而不是一个,StreamWriter并使用类似我的函数从这里GetResponseStream()直接复制返回值.FileStreamCopyStream