package demo.ftp;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class FTPClientExample {
private static final String HOST = "*****"; // FTP 服务器地址
private static final String USERNAME = "**********"; // FTP 用户名
private static final String PASSWORD = "***********"; // FTP 密码
public static void main(String[] args) {
File file = new File("C:\\Users\\LYL\\Pictures\\Camera Roll\\u=3395582942,4228440123&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto.jpg"); // 需要上传的文件
String remoteDirPath = "/images/o2o/mili"; // 远程FTP路径,即文件上传到FTP服务器中的目录,可以为空
String remoteFileName = "image111123.jpg"; // 远程FTP文件名
try {
FTPClient ftpClient = new FTPClient(); // 创建 FTP 客户端
ftpClient.connect(HOST); // 连接 FTP 服务器
int reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) { // 判断连接是否成功
ftpClient.disconnect();
System.out.println("FTP 服务器拒绝连接!");
return;
}
boolean login = ftpClient.login(USERNAME, PASSWORD);// 登录 FTP 服务器
System.out.println("登录:"+login);
ftpClient.enterLocalPassiveMode(); // 进入被动模式
ftpClient.setFileType(FTP.BINARY_FILE_TYPE); // 设置传输文件类型为二进制文件
if (!remoteDirPath.isEmpty()) { // 如果远程FTP目录不为空
ftpClient.makeDirectory(remoteDirPath); // 在远程FTP服务器上创建目录
ftpClient.changeWorkingDirectory(remoteDirPath); // 切换到当前目录
}
FileInputStream fis = new FileInputStream(file); // 创建文件输入流
BufferedInputStream bis = new BufferedInputStream(fis); // 创建缓冲输入流
boolean b = ftpClient.storeFile(remoteFileName, bis);// 上传文件到FTP服务器
System.out.println("是否上传成功:"+b);
bis.close(); // 关闭输入流
fis.close(); // 关闭输入流
ftpClient.logout(); // 登出FTP服务器
ftpClient.disconnect(); // 断开连接
System.out.println("文件上传成功!");
} catch (IOException e) {
System.out.println("文件上传失败!异常信息:" + e.getMessage());
}
}
}
maven依赖
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.8.0</version>
</dependency>