利用FtpClient类实现文件的上传下载功能

该代码源自互联网,并经过修改:

解决了中文文件名会出现乱码的情况;

改善了上传不稳定的问题(但没有从根本上解决,目前只知道在接收Socket时有时会收到一半就退出,结果造成接收数据不完整,经常出现在Dir时。尚未仔细研究。)

FtpClient.cs

     /// <summary>
    
/// FtpClient 的摘要说明。
    
/// </summary>

     public   class  FtpClient : IDisposable
    
{
        
私有变量

        
// 构造方法
        构造方法

        
// 属性
        BlockSize 接收和发送数据的缓冲区大小

        
ServerAddress Ftp 服务器地址

        
ServerPort Ftp 服务器端口

        
RemotePath 当前服务器目录

        
LoginUser 登录用户账号

        
LoginPassword 用户登录密码

        
Connected 是否登录

        
// 接口
        IDisposable 成员

        
// 私有方法
        ReadReply

        
CreateDataSocket 建立进行数据连接的socket

        
CloseSocketConnect 关闭socket连接(用于登录以前)

        
ReadLine 读取Socket返回的所有字符串

        
SendCommand 发送命令并获取应答码和最后一行应答字符串

        
// 公共方法
        Connect 建立连接

        
EnsureConnected 确保已经连接到服务器

        
Close 关闭连接

        
TransferType 获取或设置传输模式

        
Dir 获得文件列表

        
GetFileSize 获取文件大小

        
Delete 删除

        
Rename 重命名文件(如果新文件名与已有文件重名,将覆盖已有文件)

        
Download 下载文件

        
Upload 上传文件

        
MakeDirectory 创建目录

        
RenameDirectory 删除目录

        
ChangeDirectory 改变当前目录
    }

FtpClientException.cs

     /// <summary>
    
/// FtpClientException 的摘要说明。
    
/// </summary>

    [Serializable]
    
public   class  FtpClientException : Exception
    
{
        
构造方法
    }

}
FtpReply.cs
     /// <summary>
    
/// FtpReply 的摘要说明。
    
/// </summary>

    [Serializable]
    
public   class  FtpReply
    
{
        
private int _code;
        
private string _message;

        
public FtpReply() : this(0string.Empty)
        
{
        }


        
public FtpReply(int code, string message)
        
{
            
this._code = code;
            
this._message = message;
        }


        
public int Code
        
{
            
get
            
{
                
return this._code;
            }

            
set
            
{
                
this._code = value;
            }

        }


        
public string Message
        
{
            
get
            
{
                
return this._message;
            }

            
set
            
{
                
this._message = value;
            }

        }

    }

FtpTransferType.cs
     /// <summary>
    
/// 传输模式。
    
/// </summary>

     public   enum  FtpTransferType
    
{
        
/// <summary>
        
/// 二进制模式。
        
/// </summary>

        Binary,
        
/// <summary>
        
/// ASCII 模式。
        
/// </summary>

        ASCII
    }
;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值