第一步:导入依赖
<!--ftpclient-->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
第二步:代码实现
/**
* @param filePath:要上传的文件全路径
* @param ftpPath:要上传的ftp全路径
* @ftpIP FTP 的IP
* @username 用户名
* @password 密码
* @function 将指定的文件上传到ftp指定路径
* @author
*/
public static int sendToFtp(String filePath, String ftpPath,String ftpIP,String username,String password){
FTPClient ftpClient = new FTPClient();
try {
//连接ftp服务器
//设置ip,如不设置端口,使用FTP默认端口21
ftpClient.connect(ftpIP);
//设置用户名,密码
ftpClient.login(username, password);
//切换到上传目录
//ftpClient.changeWorkingDirectory("gdpHugeFileDir/TemporaryTechnology");
ftpClient.changeWorkingDirectory(ftpPath);
//将连接模式设置为被动模式,被动模式下,ftp服务器提供数据传输的端口;主动模式下(ftpClient.enterLocalActiveMode();)由客户端提供数据传输端口
ftpClient.enterLocalPassiveMode();
//设置长传文件的类型为二进制类型(不设置可能导致图片乱码)
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
//ftpClient.getReplyCode()返回值:220 连接成功;230 登录成功;250 切换目录成功;221 退出ftp
if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
//关闭资源,规避内存泄漏
ftpClient.disconnect();
return -1;
} else {
try {
File file = new File(filePath);
FileInputStream is = new FileInputStream(file);
//关闭资源,规避内存泄漏
is.close();
ftpClient.disconnect();
return 1;
}catch (IOException e){
return -1;
}
}
} catch (Exception e) {
return -1;
}
}