当前位置:首页 > Windows程序 > 正文

C# FTP操作类可用

2021-03-26 Windows程序

public class FtpClient
{
#region 构造函数
/// <summary>
/// 创建FTP工具
/// <para>
/// 默认不使用SSL,使用二进制传输方式,使用被动模式
/// </para>
/// </summary>
/// <param>主机名称</param>
/// <param>用户名</param>
/// <param>密码</param>
public FtpClient(string host, string userId, string password)
: this(host, userId, password, 21, null, false, true, true)
{
}

/// <summary>
/// 创建FTP工具
/// </summary>
/// <param>主机名称</param>
/// <param>用户名</param>
/// <param>密码</param>
/// <param>端口</param>
/// <param>允许Ssl</param>
/// <param>代理</param>
/// <param>允许二进制</param>
/// <param>允许被动模式</param>
public FtpClient(string host, string userId, string password, int port, IWebProxy proxy, bool enableSsl, bool useBinary, bool usePassive)
{
this.userId = userId;
this.password = password;
if (host.ToLower().StartsWith("ftp://"))
{
this.host = host;
}
else
{
this.host = "ftp://" + host;
}
this.port = port;
this.proxy = proxy;
this.enableSsl = enableSsl;
this.useBinary = useBinary;
this.usePassive = usePassive;
}
#endregion

#region 主机
private string host = string.Empty;
/// <summary>
/// 主机
/// </summary>
public string Host
{
get
{
return this.host ?? string.Empty;
}
}
#endregion

#region 登录用户名
private string userId = string.Empty;
/// <summary>
/// 登录用户名
/// </summary>
public string UserId
{
get
{
return this.userId;
}
}
#endregion

#region 密码
private string password = string.Empty;
/// <summary>
/// 密码
/// </summary>
public string Password
{
get
{
return this.password;
}
}
#endregion

#region 代理
IWebProxy proxy = null;
/// <summary>
/// 代理
/// </summary>
public IWebProxy Proxy
{
get
{
return this.proxy;
}
set
{
this.proxy = value;
}
}
#endregion

#region 端口
private int port = 21;
/// <summary>
/// 端口
/// </summary>
public int Port
{
get
{
return port;
}
set
{
this.port = value;
}
}
#endregion

#region 设置是否允许Ssl
private bool enableSsl = false;
/// <summary>
/// EnableSsl
/// </summary>
public bool EnableSsl
{
get
{
return enableSsl;
}
}
#endregion

#region 使用被动模式
private bool usePassive = true;
/// <summary>
/// 被动模式
/// </summary>
public bool UsePassive
{
get
{
return usePassive;
}
set
{
this.usePassive = value;
}
}
#endregion

#region 二进制方式
private bool useBinary = true;
/// <summary>
/// 二进制方式
/// </summary>
public bool UseBinary
{
get
{
return useBinary;
}
set
{
this.useBinary = value;
}
}
#endregion

#region 远端路径
private string remotePath = "http://www.mamicode.com/";
/// <summary>
/// 远端路径
/// <para>
/// 返回FTP服务器上的当前路径(可以是 / 或 /a/../ 的形式)
/// </para>
/// </summary>
public string RemotePath
{
get
{
return remotePath;
}
set
{
string result = "http://www.mamicode.com/";
if (!string.IsNullOrEmpty(value) && value != "http://www.mamicode.com/")
{
result = "http://www.mamicode.com/" + value.TrimStart(‘/‘).TrimEnd(‘/‘) + "http://www.mamicode.com/";
}
this.remotePath = result;
}
}
#endregion

#region 创建一个FTP连接
/// <summary>
/// 创建一个FTP请求
/// </summary>
/// <param>请求地址</param>
/// <param>请求方法</param>
/// <returns>FTP请求</returns>
private FtpWebRequest CreateRequest(string url, string method)
{
//建立连接
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(url);
request.Credentials = new NetworkCredential(this.userId, this.password);
request.Proxy = this.proxy;
request.KeepAlive = false;//命令执行完毕之后关闭连接
request.UseBinary = useBinary;
request.UsePassive = usePassive;
request.EnableSsl = enableSsl;
request.Method = method;
return request;
}
#endregion

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/68150.html