C#FTP文件操作之下载文件
前面写了采用ftp上传文件,有了上传怎么能够没有下载呢?如果只有上传没有下载,那上传了也没啥用了。所以今天就跟大家一起学习学习使用ftp下载文件。
知道了怎么上传,那么下载也就变得很简单了,上传是把文件放到服务器,而下载是把文件从服务器取过来。一个是从本地读文件,然后写到服务器;另一个是从服务器读文件,然后写到本地。基本原理就是这样,下面我们看看具体的代码:
/// <summary>
/// FTP下载文件
/// </summary>
/// <param name="userId">ftp用户名</param>
/// <param name="pwd">ftp密码</param>
/// <param name="ftpPath">ftp文件路径</param>
/// <param name="filePath">下载保存路径</param>
/// <param name="fileName">ftp文件名</param>
/// <returns></returns>
public string Download(string userId, string pwd, string ftpPath, string filePath, string fileName)
{
string sRet = "下载成功!";
FtpWebRequest reqFTP;
try
{
FileStream outputStream = new FileStream(filePath + fileName, FileMode.Create);
// 根据uri创建FtpWebRequest对象
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpPath + fileName));
// 指定执行什么命令
reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
// 指定数据传输类型
reqFTP.UseBinary = true;
reqFTP.UsePassive = false;
// ftp用户名和密码
reqFTP.Credentials = new NetworkCredential(userId, pwd);
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
// 把下载的文件写入流
Stream ftpStream = response.GetResponseStream();
long cl = response.ContentLength;
// 缓冲大小设置为2kb
int bufferSize = 2048;
int readCount;
byte[] buffer = new byte[bufferSize];
// 每次读文件流的2kb
readCount = ftpStream.Read(buffer, 0, bufferSize);
while (readCount > 0)
{
// 把内容从文件流写入
outputStream.Write(buffer, 0, readCount);
readCount = ftpStream.Read(buffer, 0, bufferSize);
}
//关闭两个流和ftp连接
ftpStream.Close();
outputStream.Close();
response.Close();
}
catch (Exception ex)
{
sRet=ex.Message;
}
//返回下载结果(是否下载成功)
return sRet;
}
以上代码可以实现一个简单的ftp下载的功能,只要在需要的地方调用此方法即可。代码很简单,功能很实用。
还有很多FTP的相关操作,以后会陆续跟大家分享,敬请期待!