最近看公司老的项目,由于是内部项目,所以文件存储服务器使用了fastdfs。在检查他们代码的时候,看到初始化ftpclient的时候都是使用的文件进行读取。
ClientGlobal.init(this.getClass().getResource("/").getPath()+conf);像这种我们一般是不允许的,因为现在都是纯CI/CD进行集成,如果采用这个配置文件的话,上线还得去改代码,修改配置文件名称。
按照我们的习惯,一般开发环境的配置信息配置到开发环境的配置文件即可,生产环境的配置信息配置到生产环境的配置文件即可。所以果断不能忍,直接进行改造。
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import lombok.extern.slf4j.Slf4j;
@Component
@Slf4j
public class FTPUploadUtils {
private FTPClient ftpClient;
@Value("${ftp.server.host}")
private String ftpHost;
@Value("${ftp.server.port}")
private Integer ftpPort;
@Value("${ftp.server.username}")
private String ftpUserName;
@Value("${ftp.server.password}")
private String ftpPassword;
@Value("${ftp.server.basedir}")
private String ftpBaseDir;
@PostConstruct
public void init() {
try {
ftpClient = new FTPClient();
ftpClient.setConnectTimeout(1000 * 30);// 设置连接超时时间
ftpClient.enterLocalActiveMode();// 主动模式
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);// 设置文件传输模式为二进制,可以保证传输的内容不会被改变
ftpClient.setControlEncoding("UTF-8");// 设置ftp字符集
ftpClient.connect(ftpHost, ftpPort);
ftpClient.login(ftpUserName, ftpPassword);
ftpClient.setRemoteVerificationEnabled(false);
ftpClient.makeDirectory(ftpBaseDir);
ftpClient.changeWorkingDirectory(ftpBaseDir);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
public void uploadFile(File file) throws Exception {
InputStream inputStream = new FileInputStream(file);
String oldFileName = file.getName();
// 进入到文件保存的目录
Boolean isSuccess = ftpClient.storeFile(oldFileName, inputStream);// 保存文件
log.info("FTP上传文件状态:{}", isSuccess);
}
@PreDestroy
public void close() {
try {
if (ftpClient != null && ftpClient.isConnected()) {
ftpClient.disconnect();
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
}然后我们在对应的配置文件里面添加上具体的连接信息即可。
## ftp config ftp.server.host=192.168.31.10 ftp.server.port=21 ftp.server.username=root ftp.server.password=123456 ftp.server.basedir=/app/develop/ftp/police1/upload1/
以上即改造完成。
备注:
如果希望有成长的话,建议对代码做一些改造,而不是在网上直接复制粘贴。这样子除了完成任务,对个人没有任何提升。









还没有评论,来说两句吧...