C#FTP下载
using System.Net;
下载结果枚举:
/// <summary> /// <para>下载结果</para> /// Succeeded成功, /// Failed失败, /// Exsited文件已存在, /// </summary> public enum DownLoadResult { Succeeded, Failed, Exsited, }
无口令下载:
/// <summary> /// 无口令,从FTP服务器下载文件 /// </summary> /// <param name="ftpPath">ftp路径(包含文件名),例如"ftp://192.168.169.177/FileName.txt"</param> /// <param name="savePath">保存路径(包含文件名),例如"D:\\FileName.txt"</param> /// <returns>下载成功反回Succeeded,失败返回Failed,文件已存在返回Exsited</returns> public static DownLoadResult FTPDownLoad(string ftpPath, string savePath) { DownLoadResult result; //文件已存在 if (File.Exists(savePath)) return DownLoadResult.Exsited; //声明变量 FtpWebRequest reqFTP = null;//Ftp请求 FileStream saveStream = null;//Ftp文件流 Stream ftpStream = null;//Ftp传输流 FtpWebResponse response = null;//Ftp响应 try { //创建要保存的文件 saveStream = new FileStream(savePath, FileMode.Create); //下载文件设置 reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpPath)); reqFTP.Method = WebRequestMethods.Ftp.DownloadFile; reqFTP.UseBinary = true; //开始请求 response = (FtpWebResponse)reqFTP.GetResponse(); //开始下载 ftpStream = response.GetResponseStream(); //将下载内容存入文件流 int bufferSize = 65535; int readCount; byte[] buffer = new byte[bufferSize]; readCount = ftpStream.Read(buffer, 0, bufferSize); while (readCount > 0) { saveStream.Write(buffer, 0, readCount); readCount = ftpStream.Read(buffer, 0, bufferSize); } //下载成功 result = DownLoadResult.Succeeded; } catch { //下载错误返回Failed result = DownLoadResult.Failed; } finally { //释放资源 if (ftpStream != null) ftpStream.Close(); if (saveStream != null) saveStream.Close(); if (response != null) response.Close(); } return result; }
有口令下载:
/// <summary> /// 从FTP服务器下载文件(有凭据) /// </summary> /// <param name="ftpPath">ftp路径(包含文件名),例如"ftp://192.168.169.177/FileName.txt"</param> /// <param name="savePath">保存路径(包含文件名),例如"D:\\FileName.txt"</param> /// <returns>下载成功反回Succeeded,失败返回Failed,文件已存在返回Exsited</returns> public static DownLoadResult FTPDownLoad(string ftpPath, string savePath, string ftpUserID, string ftpPassword) { DownLoadResult result; //文件已存在 if (File.Exists(savePath)) return DownLoadResult.Exsited; //声明变量 FtpWebRequest reqFTP = null;//Ftp请求 FileStream saveStream = null;//Ftp文件流 Stream ftpStream = null;//Ftp传输流 FtpWebResponse response = null;//Ftp响应 try { //创建要保存的文件 saveStream = new FileStream(savePath, FileMode.Create); //下载文件设置 reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpPath)); reqFTP.Method = WebRequestMethods.Ftp.DownloadFile; reqFTP.UseBinary = true; //添加通讯凭据 reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword); //开始请求 response = (FtpWebResponse)reqFTP.GetResponse(); //开始下载 ftpStream = response.GetResponseStream(); //将下载内容存入文件流 int bufferSize = 65535; int readCount; byte[] buffer = new byte[bufferSize]; readCount = ftpStream.Read(buffer, 0, bufferSize); while (readCount > 0) { saveStream.Write(buffer, 0, readCount); readCount = ftpStream.Read(buffer, 0, bufferSize); } //下载成功 result = DownLoadResult.Succeeded; } catch { //下载错误返回Failed result = DownLoadResult.Failed; } finally { //释放资源 if (ftpStream != null) ftpStream.Close(); if (saveStream != null) saveStream.Close(); if (response != null) response.Close(); } return result; }