依赖
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.8.0</version>
</dependency>
代码
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPConnectionClosedException;
import org.apache.commons.net.ftp.FTPReply;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class FtpUpload {
public static void main(String[] args) {
String host = "127.0.0.1";
int port = 2134;
String userName = "testFtp";
String password = "testFtp";
File file = new File("D:\\testFile.txt");
FTPClient ftpClient = new FTPClient();
ftpClient.setControlEncoding("UTF-8");
try {
ftpClient.connect(host, port);
System.out.println("连接服务器" + host + ":" + port);
int replyCode = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(replyCode)) {
disconnectQuietly(ftpClient);
System.out.println("服务器拒绝连接");
return;
}
} catch (IOException e) {
disconnectQuietly(ftpClient);
System.out.println("连接ftp失败");
e.printStackTrace();
return;
}
try {
boolean success = ftpClient.login(userName, password);
if (!success) {
ftpClient.logout();
System.out.println("客户端登录失败");
return;
}
System.out.println("客户端登录成功");
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
boolean done = false;
try (final InputStream input = new FileInputStream(file)) {
String remote = "testUpload/" + file.getName();
done = ftpClient.storeFile(remote, input);
}
if (done) {
System.out.println("上传文件" + file.getName() + "成功");
} else {
System.out.println("上传文件" + file.getName() + "失败");
showServerReply(ftpClient);
}
ftpClient.noop();
ftpClient.logout();
} catch(FTPConnectionClosedException e) {
System.out.println("服务端关闭连接");
e.printStackTrace();
} catch (IOException e) {
System.out.println("客户端登录或操作失败");
e.printStackTrace();
} finally {
disconnectQuietly(ftpClient);
}
}
public static void disconnectQuietly(FTPClient ftpClient) {
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException ex) {
}
}
}
public static void showServerReply(FTPClient ftpClient) {
String[] replies = ftpClient.getReplyStrings();
if (replies != null && replies.length > 0) {
for (String aReply : replies) {
System.out.println("服务端响应信息: " + aReply);
}
}
}
}