两种登录方式如下,一种是域名登录,一种是IP方式登录,两种都可以,如果要连接多个ftp的话。链接信息域名、IP、登录名和密码,可以存在数据库中 需要登录的时候直接传到这个方法中就可以啦,如果只用链接一个ftp则可以在资源文件配置链接信息,这种方法可以看我其他的博文《@value()注解的使用》里边有关于资源文件的引用方法,
类开始的时候定义了全局变量
private static FTPClient ftpClient = new FTPClient();
下面是两种登录方法:
public FTPClient loginFtp(Map<String, Object> params) {
try {String domain = (String) params.get("domainName");//域名方式登录多个域名可以存在表里,登录FTP时放在参数里传入
String userName = (String) params.get("userName");
String pw = (String) params.get("pw");
if (null != domain && !domain.isEmpty()) {//如果通过域名登陆则通过此方法,如果通过IP,port登陆则添加到else方法中
ftpClient .connect(domain);
ftpClient .setControlEncoding("GBK");
FTPClientConfig ftpConfig = new FTPClientConfig(FTPClientConfig.SYST_UNIX);
ftpConfig.setServerLanguageCode("zh");
ftpClient .login(userName, pw);
int reply = 0;
reply = ftpClient .getReplyCode();
System.out.println(reply);
if (FTPReply.isPositiveCompletion(reply)) {
System.out.println("域名方式登录成功!
logger.debug("域名方式登录成功!");
} else {
System.out.println("域名方式登录失败!");
logger.error("域名方式登录失败!远程FTP登陆失败。");
throw new BusinessException("远程FTP登陆失败,请重新审核");
}
} else {
ftpClient .connect(ip, port);//此处的IP,端口等都是资源文件中配置的,类代码中直接用@value注入的
ftpClient .setControlEncoding("GBK");
FTPClientConfig ftpConfig = new FTPClientConfig(FTPClientConfig.SYST_UNIX);
ftpConfig.setServerLanguageCode("zh");
ftpClient .login(username, password);
int reply = 0;
reply = ftpClient.getReplyCode();
System.out.println(reply);
if (FTPReply.isPositiveCompletion(reply)) {
System.out.println("IP端口方式登录成功!");
logger.debug("IP端口方式登录成功!");
} else {
System.out.println("IP端口方式登录失败!");
logger.error("IP端口方式登录失败!本地FTP登陆失败");
throw new BusinessException("本地FTP登陆失败");
}
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return ftpClient;
}
退出:
/**
* @param ftpc :退出FTP登录
* @return boolean :是否已经关闭连接
* @throws IOException
*/
public static boolean closeConnections(FTPClient ftpc) throws IOException {
boolean bool = false;
bool = ftpc.logout();
return bool;
}