1、引入依赖
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
2、代码
/**
*ftp上传单个文件
* @param hostname 服务器地址
* @param port 端口号
* @param username 用户名
* @param password 密码
* @param uploadFilePath 上传文件路径(包括文件名)
* @param destPath ftp上传目录
*/
public void ftpUploadFile(String hostname,int port,String username,String password,String uploadFilePath,String destPath){
FTPClient ftp = new FTPClient();
System.out.println("准备连接到ftp");
try {
//连接
ftp.connect(hostname, port);
//登录
boolean loginS = ftp.login(username, password);
if (!loginS) {
System.out.println("ftp登录失败,用户名或密码错误");
return;
}else{
System.out.println("ftp登录成功");
}
// 获取本地文件并上传
String file = uploadFilePath;
FileInputStream input = new FileInputStream(file);
ftp.changeWorkingDirectory(destPath);//跳转目录
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);//必须要设置以二进制的方式传输文件
ftp.enterLocalPassiveMode();//被动模式
file = new String(file.getBytes("GBK"),"iso-8859-1");
if (!ftp.storeFile(new File(file).getName(), input)) {
System.out.println("失败,服务器返回:" + ftp.getReplyString());//获取上传失败的原因
} else {
System.out.println("文件:" + new File(file).getName() + " 上传成功");
}
input.close();
ftp.logout();
} catch (IOException e) {
System.out.println("ftp连接失败");
}
}