|
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[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;
}
有口令下载:
///
/// 从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[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;
} |
|
|