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);
FTP上传功能的客户端实现
最新推荐文章于 2022-03-02 22:01:58 发布