依赖的包
commons-net 包
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
</dependency>
使用方法
/**
* @param hostname ftp 服务器ip
* @param port ftp服务器端口号
* @param username 用户名
* @param password 密码
* @param basePath ftp服务器根路径
* @param inputStream 文件输入流
* @param remote ftp远程服务器文件名
* @return 是否上传成功
* @throws IOException
*/
public static boolean uploadFile(String hostname, int port, String username, String password, String basePath, FileInputStream inputStream, String remote) throws IOException {
//1、创建一个FtpClient对象
FTPClient ftpClient = new FTPClient();
//2、创建FTP连接
ftpClient.connect(hostname, port);
//3、登录FTP 服务器,使用用户名密码
ftpClient.login(username, password);
//4、上传文件
// FTPClient默认是 字符串,会将二进制转为 utf-8字符串。
// 上传二进制文件
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
//切换路径,这样可以将文件上传到此路径,否则会上传到根路径
ftpClient.changeWorkingDirectory(basePath);
boolean re = ftpClient.storeFile(remote, inputStream);
//5、关闭连接
ftpClient.logout();
return re;
}
-
测试代码
@Test public void testFTPClient() throws IOException { String hostname = "192.168.43.106"; int port = 21; String username = "ftpuser"; String password = "123456"; String basePath = "/home/ftpuser/www/img"; File imageFile = new File("/Users/liujian/Desktop/timg.jpg"); FileInputStream inputStream = new FileInputStream(imageFile); String remote = "mv.jpg"; boolean f = FTPClientUtils.uploadFile(hostname, port, username, password, basePath, inputStream, remote); if (f) { System.out.println("上传成功"); } else { System.out.println("上传失败"); } }