我是007 发表于 2015-5-28 11:15:01

C#FTP下载

  using System.Net;
  下载结果枚举:



    ///
    /// 下载结果
    /// Succeeded成功,
    /// Failed失败,
    /// Exsited文件已存在,
    ///
    public enum DownLoadResult
    {
       Succeeded,
       Failed,
        Exsited,
    }
  无口令下载:



    ///
/// 无口令,从FTP服务器下载文件
///
/// ftp路径(包含文件名),例如"ftp://192.168.169.177/FileName.txt"
/// 保存路径(包含文件名),例如"D:\\FileName.txt"
/// 下载成功反回Succeeded,失败返回Failed,文件已存在返回Exsited
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;
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;
}
  有口令下载:



      ///
/// 从FTP服务器下载文件(有凭据)
///
/// ftp路径(包含文件名),例如"ftp://192.168.169.177/FileName.txt"
/// 保存路径(包含文件名),例如"D:\\FileName.txt"
/// 下载成功反回Succeeded,失败返回Failed,文件已存在返回Exsited
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;
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;
}
页: [1]
查看完整版本: C#FTP下载