FTPUtil配置
public class FTPUtil {
//ip地址
private static final String FTP_ADDRESS="172.18.2.234";
//端口号
private static final int FTP_PORT= 21;
//ftp用户名
private static final String FTP_USERNAME="anonymous";
//ftp密码
private static final String FTP_PASSWORD=null;
private static final String FTP_BASEPATH="/schoolFiles";
//文件上传 //文件名 io输入流
public static boolean uploadFile(String fileName, InputStream input){
boolean success=false;
//new有个客户端
FTPClient ftp=new FTPClient();
try {
int reply;
ftp.connect(FTP_ADDRESS,FTP_PORT);
ftp.login(FTP_USERNAME,FTP_PASSWORD);
reply=ftp.getReplyCode();
//如果没有连上,那么就自动断开
if (!FTPReply.isPositiveCompletion(reply)){
ftp.disconnect();
return false;
}
//设置文件类型 二进制
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
//创建文件夹
ftp.makeDirectory(FTP_BASEPATH);
//改变目录
ftp.changeWorkingDirectory(FTP_BASEPATH);
ftp.enterLocalPassiveMode();
//传文件
ftp.storeFile(fileName, input);
//输入流关闭
input.close();
//ftp注销
ftp.logout();
success=true;
} catch (IOException e) {
e.printStackTrace();
}finally {
if (ftp.isConnected()){
try {
ftp.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return success;
}
}
文件上传Controller
public String addStudent(@RequestParam("file") MultipartFile file, Student student,Model model) throws IOException {
//获取上传的文件流
InputStream inputStream=file.getInputStream();
//获取上传的文件名
String filename=file.getOriginalFilename();
//截取后缀
String suffix=filename.substring(filename.lastIndexOf("."));
//使用时间戳拼接后缀,生成一个不重复的文件名
String finalName=System.currentTimeMillis()+suffix;
//调用自定义的FTP工具类上传文件
FTPUtil.uploadFile(finalName,inputStream);
studentDao.addStudent(student);
return "redirect:studentList";
}