FTP上传功能的客户端实现

FTP的管理类:需要org.apache.commons.net jar包,方法是可行的,不需要的东西去掉即可,自己再下载一个服务端软件即可测试
```

public class FTPManager {
    private static FTPManager instance;
    public static final int STATE_UNUPLOAD = 0;                                    // 未上传
    public static final int STATE_UPLOADING = 1;                                   // 上传中
    public static final int STATE_PAUSEUPLOAD = 2;                                 // 暂停上传
    public static final int STATE_WAITINGUPLOAD = 3;                               // 等待上传
    public static final int STATE_UPLOADFAILED = 4;                                // 上传失败
    public static final int STATE_UPLOADED = 5;                                    // 上传完成
    public static final int STATE_CONNECTFAILED = 6;                               // 连接失败
    public static final int STATE_CONNECTSUCCESS = 7;                              // 连接成功
    public static final int STATE_PROGRESSING = 8;                                 // 正在传输,用于获取进度值
    // 记录用户点击了下载按钮对应的UpLoadInfo
    public Map<String, UpLoadInfo> mUpLoadInfoMap = new HashMap<String, UpLoadInfo>();

    private FTPManager() {}

    public static FTPManager getInstance() {//单例
        if (instance == null) {
            synchronized (FTPManager.class) {
                if (instance == null) {
                    instance = new FTPManager();
                }
            }
        }
        return instance;
    }

    public String ipAddr;
    public int serverPort;
    public String userName;
    public String password;
    public FTPClient ftpClient;

    public void setFtpClient(Ftp f) {
        this.ipAddr = f.getIpAddr();
        this.serverPort = f.getPort();
        this.userName = f.getUserName();
        this.password = f.getPwd();
        this.ftpClient = new FTPClient();
    }

    boolean isFtpConnectted;
    /**
     * 打开FTP服务.
     */
    public boolean openConnect() {
        if (ftpClient.isConnected()) {
            return true;
        }
        isFtpConnectted = false;
        // 中文转码
        ftpClient.setControlEncoding("UTF-8");
        int reply; // 服务器响应值
        // 连接至服务器
        try {
            ftpClient.setConnectTimeout(1500);//设置连接超时时间
            ftpClient.connect(ipAddr, serverPort);
            // 获取响应值
            reply = ftpClient.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply)) {
                // 断开连接
                ftpClient.disconnect();
                throw new IOException("connect fail: " + reply);
            }
            // 登录到服务器
            ftpClient.login(userName, password);
            // 获取响应值
            reply = ftpClient.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply)) {
                // 断开连接
                ftpClient.disconnect();
                throw new IOException("login fail: " + reply);
            } else {
            /*// 获取登录信息
            FTPClientConfig config = new FTPClientConfig(ftpClient
                    .getSystemType().split(" ")[0]);
            config.setServerLanguageCode("zh");
            ftpClient.configure(config);*/
                // 使用被动模式设为默认
                //ftpClient.enterLocalPassiveMode();zzj注释,暂时无用,未出现卡死
                // 二进制文件支持
                ftpClient.setFileType(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE);
       
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值