C# 如何在C中从Ftp下载Zip文件#
我必须使用c代码从ftp下载zip文件。 我使用了以下代码C# 如何在C中从Ftp下载Zip文件#,c#,ftp,C#,Ftp,我必须使用c代码从ftp下载zip文件。 我使用了以下代码 Uri url = new Uri("ftp://ftpurl"); if (url.Scheme == Uri.UriSchemeFtp) { FtpWebRequest objRequest = (FtpWebRequest)FtpWebRequest.Create(url); //Set credentials if required
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保存文件,而这段代码正在将文件中的数据以字节的形式写入我的文件。
我的文件是zip文件而不是文本文件。
请帮助我该怎么做,否则我会误解。我猜这与您使用的是StreamReader
有关。在构造过程中,它可能从流中读取数据,以尝试确定编码。因为您并没有真正使用它—只是基本流
—它毫无意义,并且会导致代码不清晰
只需使用:
Stream inputStream = objResponse.GetResponseStream();
此外,您应该对所有流和响应使用using
语句
哦,如果您使用的是.NET 4或更高版本,请使用
Stream.CopyTo
节省一些时间。如果您不反对使用免费的第三方库,您可以使用
这使得访问FTP变得简单多了。示例代码(取自并稍微修改了其代码):
为什么要使用
StreamReader
?您不是直接从它读取数据,而是从它的基流
读取数据。为什么不直接使用流呢?你需要更具体一些,“没有给我正确的回答”还不够清楚。出什么事了?您没有得到完整的文件吗?我不确定是否正确理解了问题,但您是否尝试了E:\ftpwrite.zip?
using (FTPConnection ftp = new FTPConnection())
{
ftpConnection.ServerAddress = "myserver";
ftpConnection.UserName = userName;
ftpConnection.Password = password;
ftpConnection.Connect();
ftpConnection.DownloadFile(localFilePath, remoteFileName);
}