如何使用c#从FTP下载文件
本文关键字:下载 文件 FTP 何使用 | 更新日期: 2023-09-27 18:13:44
我正在尝试从FTP下载文件。但是服务器返回错误550(未找到文件,无法访问)在代码下面,
FtpWebRequest reqFTP;
try
{
FileStream outputStream = new FileStream("d:/test/" +
"''" +a , FileMode.Create,FileAccess.Write,FileShare.Read);
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://example.com/" + " /" + a));
reqFTP.KeepAlive = false;
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
reqFTP.UseBinary = true;
reqFTP.Proxy = null;
reqFTP.UsePassive = false;
reqFTP.Credentials = new NetworkCredential("aaaa", "bbbb@1234");
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
// ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
Stream ftpStream = response.GetResponseStream();
long cl = response.ContentLength;
int bufferSize = 2048;
int readCount;
byte[] buffer = new byte[bufferSize];
readCount = ftpStream.Read(buffer, 0, bufferSize);
while (readCount > 0)
{
outputStream.Write(buffer, 0, readCount);
readCount = ftpStream.Read(buffer, 0, bufferSize);
}
ftpStream.Close();
outputStream.Close();
response.Close();
}
catch (WebException ex)
{
//MessageBox.Show(ex.Message);
String status = ((FtpWebResponse)ex.Response).StatusDescription;
MessageBox.Show(status);
}
文件可以显示在列表中。当阅读没有问题,而下载它抛出一个错误-550,在我的ftp我有。txt,img,.pdf,.rar,.exe文件格式。
看一下这篇文章:使用c# WebClient类上传和下载FTP文件
基本上,它依赖于WebClient
对象来完成所有的网络工作。
本文将其封装在一个自定义类中,该类与凭据一起工作。
文章的重要部分是:
public byte[] DownloadData(string path)
{
// Get the object used to communicate with the server.
WebClient request = new WebClient();
// Logon to the server using username + password
request.Credentials = new NetworkCredential(Username, Password);
return request.DownloadData(BuildServerUri(path));
}
确保凭证和路径正确。
我只是在FTP地址中设置了确切的路径,并设置缓冲区大小也高值,然后它的工作很好。
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://example.com/file path);
缓冲区大小,
byte[] buffer = new byte[32 * 1024];