MAVEN 添加
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.1</version>
</dependency>
FTP工具類
import org.apache.commons.net.ftp.FTPClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
public class FTPUtil {
private FTPClient ftpClient;
private static String ftpIp = PropertiesUtil.getProperty("ftp.server.ip");
private static String ftpUsername = PropertiesUtil.getProperty("ftp.username");
private static String ftpPassword = PropertiesUtil.getProperty("ftp.password");
private static final Logger logger = LoggerFactory.getLogger(FTPUtil.class);
private boolean connectServer(String ip,String user,String pwd){
boolean isSuccess = false;
ftpClient = new FTPClient();
try {
ftpClient.connect(ip);
isSuccess = ftpClient.login(user,pwd);
} catch (IOException e) {
logger.error("登錄FTP服務器異常",e);
}
return isSuccess;
}
public static boolean uploadFile(List<File> fileList) throws IOException {
FTPUtil ftpUtil=new FTPUtil();
logger.info("開始連接ftp服務器");
boolean result = ftpUtil.uploadFile("img",fileList);
logger.info("開始連接ftp服務器,結束上傳,上傳結果:{}",result);
return result;
}
private boolean uploadFile(String remotePath,List<File> fileList) throws IOException {
boolean uploaded = true;
FileInputStream fis = null;
if(connectServer(ftpIp,ftpUsername,ftpPassword )){
try {
ftpClient.changeWorkingDirectory(remotePath);
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("UTF-8");
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode();
for(File fileItem : fileList){
fis = new FileInputStream(fileItem);
ftpClient.storeFile(fileItem.getName(),fis);
}
} catch (IOException e) {
logger.error("上傳文件異常",e);
uploaded = false;
e.printStackTrace();
} finally {
fis.close();
ftpClient.disconnect();
}
}
return uploaded;
}
}
使用
import com.takefree.service.FileService;
import com.takefree.utility.FTPUtil;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
@Service
public class FileServiceImpl implements FileService {
public String upload(MultipartFile file, HttpServletRequest httpServletRequest)
{
String fileName=file.getOriginalFilename();
String fileExName=fileName.substring(fileName.lastIndexOf(".")+1);
String uploadFileName= UUID.randomUUID().toString()+"."+fileExName;
String path=httpServletRequest.getSession().getServletContext().getRealPath("upload");
File fileDir=new File(path);
if(!fileDir.exists()) {
fileDir.setWritable(true);
fileDir.mkdirs();
}
File targetFile=new File(path,uploadFileName);
try {
file.transferTo(targetFile);
FTPUtil.uploadFile(Lists.newArrayList(targetFile));
targetFile.delete();
} catch (IOException e) {
e.printStackTrace();
}
return targetFile.getName();
}
}