CSharp - 在 C# 中,如何从Ftp下载Zip文件

  显示原文与译文双语对照的内容
0 0

我必须使用 C# 代码从ftp下载zip文件。 我使用了以下代码。


 Uri url = new Uri("ftp://ftpurl");
 if (url.Scheme == Uri.UriSchemeFtp)
 {

 FtpWebRequest objRequest = (FtpWebRequest)FtpWebRequest.Create(url);
//Set credentials if required else comment this Credential code
 NetworkCredential objCredential = new NetworkCredential(userid, Pwd);
 objRequest.Credentials = objCredential;
 objRequest.Method = WebRequestMethods.Ftp.DownloadFile;

 FtpWebResponse objResponse = (FtpWebResponse)objRequest.GetResponse();

 StreamReader objReader = new StreamReader(objResponse.GetResponseStream());
 byte[] buffer = new byte[16 * 1024];
 int len = 0;
 FileStream objFS = new FileStream(@"E:ftpwrite", FileMode.Create, FileAccess.Write, FileShare.Read);
 while ((len = objReader.BaseStream.Read(buffer, 0, buffer.Length))!= 0)
 {
 objFS.Write(buffer, 0, len);
 }
 objFS.Close();
 objResponse.Close();

 }

但这个代码并不给我正确的响应,因为我想从ftp保存文件,而这个代码将数据从文件写入文件。 文件是压缩文件,不是文本文件。 请帮助我应该做什么,或者我是 mistunderstanding 。

时间: 原作者:

0 0

我的猜测是,这是与你使用 StreamReader的事实有关。 可以能是在构建时从流读取,试图确定编码。 因为你不是真正的使用它只是 BaseStream 没有意义,导致代码不明确。

只是使用:


Stream inputStream = objResponse.GetResponseStream();

另外,你应该对使用 using 语句all所有和响应。

如果你使用的是. NET 4或者更高版本,使用 Stream.CopyTo 来节省你的时间。

原作者:
0 0

如果你不反对使用免费 3rd 方库,那么你可以使用 http://www.enterprisedt.com/products/edtftpnet/download.html

它使得访问FTP变得更简单了。 示例代码( 从他们的文档中进行修改和稍微修改。):


using (FTPConnection ftp = new FTPConnection())
{
 ftpConnection.ServerAddress ="myserver";
 ftpConnection.UserName = userName;
 ftpConnection.Password = password; 
 ftpConnection.Connect();
 ftpConnection.DownloadFile(localFilePath, remoteFileName);
}

原作者:
...