最近看公司老的项目,由于是内部项目,所以文件存储服务器使用了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/
以上即改造完成。
备注:
如果希望有成长的话,建议对代码做一些改造,而不是在网上直接复制粘贴。这样子除了完成任务,对个人没有任何提升。
还没有评论,来说两句吧...