在pom.xml导入依赖
<!-- FTP上传文件依赖 -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.7</version>
</dependency>
ftp上传工具类
public class FtpUtil {
//ftp服务器ip地址
private static final String FTP_ADDRESS = "192.168.5.132";
//端口号
private static final int FTP_PORT = 21;
//用户名
private static final String FTP_USERNAME = "user";
//密码
private static final String FTP_PASSWORD = "wzl7373520";
//附件路径
private static final String FTP_BASEPATH = "/home/user/";
/**
* @param fileName:将文件名作为参数传递
* @param inputStream:将文件以IO流的形式传递
* @return
*/
public static boolean uploadFile(String fileName, InputStream inputStream) {
boolean success = false;//记录上传成功与否
FTPClient ftpClient = new FTPClient();//实例FTP客户端
try {
int reply;
ftpClient.connect(FTP_ADDRESS, FTP_PORT);//连接FTP服务器
ftpClient.login(FTP_USERNAME, FTP_PASSWORD);//用户名密码登录
reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {//若为连接成功,进行断开操作
ftpClient.disconnect();
return false;
}
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);//设置文件类型
ftpClient.makeDirectory(FTP_BASEPATH);//创建文件夹
ftpClient.changeWorkingDirectory(FTP_BASEPATH);//改变目录
ftpClient.enterLocalPassiveMode();
ftpClient.storeFile(fileName, inputStream);
inputStream.close();
ftpClient.logout();
success = true;
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
return success;
}
}
测试接口:
/**
* 单个文件上传接口
*
* @param file:前端传过来的文件
* @return
*/
@PostMapping("/fileupload")
@ResponseBody
public String singleFileUpload(@RequestParam("file") MultipartFile file) throws IOException {
//传入文件为空返回上传失败
if (file.isEmpty()) {
return "未选择文件,请重新上传";
}
//获得要上传的文件名称
String fileName = file.getOriginalFilename();
InputStream inputStream = file.getInputStream();
boolean b = FtpUtil.uploadFile(fileName, inputStream);
return "上传"+b;
}
学习☞:https://www.bilibili.com/video/BV1GE411x7Sz/?spm_id_from=333.788.b_7265636f5f6c697374.14