1、FtpUtil工具类
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class FtpUtil {
static String ip = "119.23.221.103";
static String userName = "user";
static String passWord = "a";
static FTPClient ftpClient = new FTPClient();
public static boolean uploadToFtp(File file,String imgPaths){
try {
//连接ftp服务器 参数填服务器的ip
ftpClient.connect(ip);
//进行登录 参数分别为账号 密码
ftpClient.login(userName,passWord);
//改变工作目录(按自己需要是否改变)
// 文件夹不存在时新建
if(!ftpClient.changeWorkingDirectory(imgPaths)){
ftpClient.makeDirectory(imgPaths);
}
ftpClient.changeWorkingDirectory(imgPaths);
//设置文件类型为二进制文件
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
//开启被动模式(按自己如何配置的ftp服务器来决定是否开启)
// ftpClient.enterLocalPassiveMode();
//上传文件 参数:上传后的文件名,输入流
ftpClient.storeFile(file.getName(), new FileInputStream(file));
// System.out.println(imgPaths+"/"+file.getName());
} catch (IOException e) {
e.printStackTrace();
return false;
}
return true;
}
public static void deleteToFtp(String imgPath,String imgName) throws IOException {
//连接ftp服务器 参数填服务器的ip
ftpClient.connect(ip);
//进行登录 参数分别为账号 密码
ftpClient.login(userName,passWord);
if(ftpClient.changeWorkingDirectory(imgPath)){
// System.out.println(imgPath + imgName);
ftpClient.deleteFile(imgName);
}
}
}
2、上传(我这里是多个文件上传,单个上传自己根据代码把MultipartFile[ ]变成MultipartFile 。for去掉即可)
import com.jw.lzsp.config.CorsConfig;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.UUID;
public class ImgUpload {
public static String imgUpload(MultipartFile[] files){
//取当前日期作为文件夹划分年/月/日文件夹
String[] nowDates = (LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))).split("-");
String nowDate = nowDates[0]+"/"+nowDates[1]+"/"+nowDates[2];
String imgPaths = "";
for(MultipartFile file:files){
String uuid = UUID.randomUUID().toString().replaceAll("-","");
String fileName = file.getOriginalFilename(); // 文件名file.getOriginalFilename()
String fileType = fileName.substring(fileName.lastIndexOf("."));
File dest = new File(CorsConfig.tempPath+"img/" + uuid + fileType);//先上传到本地,然后在上传到ftp
//图片临时存放地址根路径img文件夹,即FTP服务器的根目录文件夹。
File parentPath = new File(CorsConfig.tempPath+"img");//CorsConfig.tempPath是上传到本地的服务器的文件路径
if (!parentPath.exists()){
parentPath.mkdirs();
}
//拼接图片路径
if(imgPaths.equals("")){
imgPaths =nowDate+"/" +uuid + fileType;
}else {
imgPaths += ";"+nowDate+"/" +uuid + fileType;
}
try {
//上传到本地
file.transferTo(dest);
//上传至ftp服务器
FtpUtil.uploadToFtp(dest,nowDate);
//2、删除本地文件
// dest.delete();
} catch (Exception e) {
System.err.println(e);
}
}
return imgPaths;
}
}