洪城义警-正式版后台
zhongrj
2022-12-05 25d2a49ecb07ad13a5e223f033547d8dbdb95132
ftp 文件上传修改
6 files modified
208 ■■■■■ changed files
src/main/java/org/springblade/common/config/FtpConfig.java 20 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/FTP/FtpUtil.java 15 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/FTP/monitor.java 155 ●●●● patch | view | raw | blame | history
src/main/resources/application-dev.yml 3 ●●●● patch | view | raw | blame | history
src/main/resources/application-test.yml 14 ●●●● patch | view | raw | blame | history
src/main/resources/application.yml 1 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/common/config/FtpConfig.java
@@ -42,15 +42,21 @@
    /**
     * ftp服务器路径
     * ftp服务器基础路径
     */
    public static String ftpPath;
    public static String ftpBasePath;
    /**
     * ftp服务器文件路径
     */
    public static String ftpFilePath;
    /**
     * 本地路径
     */
    public static String localPath;
    /**
     * minio内网ip
@@ -81,8 +87,12 @@
        FtpConfig.ftpPassword = ftpPassword;
    }
    public void setFtpPath(String ftpPath) {
        FtpConfig.ftpPath = ftpPath;
    public void setFtpBasePath(String ftpBasePath) {
        FtpConfig.ftpBasePath = ftpBasePath;
    }
    public void setFtpFilePath(String ftpFilePath) {
        FtpConfig.ftpFilePath = ftpFilePath;
    }
    public void setLocalPath(String localPath) {
src/main/java/org/springblade/modules/FTP/FtpUtil.java
@@ -147,10 +147,11 @@
            if (!ftpClient.changeWorkingDirectory(basePath + filePath)) {
                // 如果目录不存在创建目录
                String[] dirs = filePath.split("/");
                String tempPath = basePath;
                String tempPath = "";
                for (String dir : dirs) {
                    if (null == dir || "".equals(dir))
                    if (null == dir || "".equals(dir)) {
                        continue;
                    }
                    tempPath += "/" + dir;
                    if (!ftpClient.changeWorkingDirectory(tempPath)) {
                        if (!ftpClient.makeDirectory(tempPath)) {
@@ -166,8 +167,10 @@
                LOCAL_CHARSET = "UTF-8";
            }
            ftpClient.setControlEncoding(LOCAL_CHARSET);
            ftpClient.enterLocalPassiveMode();// 设置被动模式
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);// 设置传输的模式
            // 设置被动模式
            ftpClient.enterLocalPassiveMode();
            // 设置传输的模式
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            // 上传文件
            filename = new String(filename.getBytes(LOCAL_CHARSET), SERVER_CHARSET);
            if (!ftpClient.storeFile(filename, input)) {
@@ -301,7 +304,7 @@
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        FtpUtil.uploadFile(ftpHost, ftpPort, ftpUserName, ftpPassword, ftpPath, "/",  "q"+response1+".json", in1);
        FtpUtil.uploadFile(ftpHost, ftpPort, ftpUserName, ftpPassword, ftpBasePath, ftpFilePath,  "q"+response1+".json", in1);
        MysqlCenlint.deletess("q"+response1+".json");
    }
@@ -319,7 +322,7 @@
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        FtpUtil.uploadFile(ftpHost, ftpPort, ftpUserName, ftpPassword, ftpPath, "/",  "w"+response1+".json", in1);
        FtpUtil.uploadFile(ftpHost, ftpPort, ftpUserName, ftpPassword, ftpBasePath, "/",  "w"+response1+".json", in1);
        MysqlCenlint.deletess("w"+response1+".json");
    }
src/main/java/org/springblade/modules/FTP/monitor.java
@@ -6,10 +6,8 @@
import org.apache.commons.net.ftp.FTPReply;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.io.InputStream;
import static org.springblade.common.config.FtpConfig.*;
@@ -20,160 +18,87 @@
    public static boolean isFTPFileExist() {
        FTPClient ftp = new FTPClient();
        String fileName = null;
        try {
            // 连接ftp服务器
//            System.out.println("ftpHost = " + ftpHost);
            ftp.connect(ftpHost, ftpPort);
            // 登陆
            ftp.login(ftpUserName, ftpPassword);
            // 检验登陆操作的返回码是否正确
            if (!FTPReply.isPositiveCompletion(ftp.getReplyCode())) {
                ftp.disconnect();
                return false;
            }
            ftp.enterLocalActiveMode();
            // 设置文件类型为二进制,与ASCII有区别
            ftp.setFileType(FTP.BINARY_FILE_TYPE);
            // 设置编码格式
            ftp.setControlEncoding("GBK");
            // 提取绝对地址的目录以及文件名
            //ftpPath = ftpPath.replace("ftp://" + ftpHost + ":" + ftpPort + "/", "");
            //String dir = ftpPath.substring(0, ftpPath.lastIndexOf("/"));
            // file = ftpPath.substring(ftpPath.lastIndexOf("/") + 1);
            // 进入文件所在目录,注意编码格式,以能够正确识别中文目录
            //ftp.changeWorkingDirectory(new String(dir.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING));
            // 检验文件是否存在
            ftp.changeWorkingDirectory(ftpPath);
            // 切换到 ftpFilePath 文件目录
            boolean directory = ftp.changeWorkingDirectory(ftpFilePath);
            FTPFile[] files = ftp.listFiles();
            if (files.length==0){
                return false;
            }
            else {
                for (FTPFile file : files){
                    String fileName = file.getName();
                    fileName = file.getName();
                    InputStream is = ftp.retrieveFileStream(new String(fileName.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING));
                    String substring1 = fileName.substring(0, 1);
                    if (substring1.equals("n")){
                    if (substring1.equals("q")){
                        //把文件下载到本地
                        FtpUtil.downloadFtpFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpPath, localPath, fileName);
                        //
                        FtpUtil.downloadFtpFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpFilePath, localPath, fileName);
                        // 转换
                        String s = OutJson.TestJson(fileName);
                        //sql语句
                        String sql = OutJson.stringReplace(s);
                        String[] split = sql.split(";");//以逗号分割
                        for (String sqls : split) {
                            //判断是否是新增,删除,修改
                            String substring = sqls.substring(0, 2);
                            //新增
                            if (substring.equals("in")) {
                                //运行sql语句
                                MysqlCenlint.inster(sqls);
                            }
                            //修改
                            else if (substring.equals("up")) {
                                MysqlCenlint.update(sqls);
                            }
                            //删除
                            else {
                                MysqlCenlint.delete(sqls);
                        if (!sql.isEmpty()) {
                            //以逗号分割
                            String[] split = sql.split(";");
                            for (String sqls : split) {
                                //判断是否是新增,删除,修改
                                String substring = sqls.substring(0, 2);
                                //新增
                                if (substring.equals("in")) {
                                    //运行sql语句
                                    MysqlCenlint.inster(sqls);
                                }
                                //修改
                                else if (substring.equals("up")) {
                                    MysqlCenlint.update(sqls);
                                }
                                //删除
                                else {
                                    MysqlCenlint.delete(sqls);
                                }
                            }
                        }
                        //删除本地文件
                        //MysqlCenlint.deletes(fileName);
                        MysqlCenlint.deletess(fileName);
                        FtpUtil.deleteFile(ftpHost, ftpPort, ftpUserName, ftpPassword, ftpPath, fileName);
                        FtpUtil.deleteFile(ftpHost, ftpPort, ftpUserName, ftpPassword, ftpFilePath, fileName);
                        is.close();
                        ftp.completePendingCommand();
                    }
                }
                return true;
            }
            //InputStream is = ftp.retrieveFileStream(new String(file.getBytes("GBK"), FTP.DEFAULT_CONTROL_ENCODING));
//            if (is == null || ftp.getReplyCode() == FTPReply.FILE_UNAVAILABLE) {
//                return false;
//
//            }
//
//            if (is != null) {
//                //把文件下载到本地
//                FtpUtil.downloadFtpFile(ftpHost, ftpUserName, ftpPassword, ftpPort, ftpPath, localPath, fileName);
//                //
//                String s = OutJson.TestJson();
//                //sql语句
//                String sql = OutJson.stringReplace(s);
//                String[] split = sql.split(";");//以逗号分割
//                for (String sqls : split) {
//                    //判断是否是新增,删除,修改
//                    String substring = sqls.substring(0, 2);
//                    //新增
//                    if (substring.equals("in")) {
//                        //运行sql语句
//                        MysqlCenlint.inster(sqls);
//                    }
//                    //修改
//                    else if (substring.equals("up")) {
//                        MysqlCenlint.update(sqls);
//                    }
//                    //删除
//                    else {
//                        MysqlCenlint.delete(sqls);
//                    }
//                }
//                //删除本地文件
//                MysqlCenlint.delete();
//                FtpUtil.deleteFile(ftpHost, ftpPort, ftpUserName, ftpPassword, "anbao/", "nsql.json");
//                is.close();
//                ftp.completePendingCommand();
//
//            }
        } catch (Exception e) {
            System.out.println("ftp连接失败");
            e.printStackTrace();
        } finally {
            if (ftp != null) {
                try {
                    ftp.disconnect();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            if (null!= fileName) {
                MysqlCenlint.deletess(fileName);
                FtpUtil.deleteFile(ftpHost, ftpPort, ftpUserName, ftpPassword, ftpFilePath, fileName);
            }
            e.printStackTrace();
        } finally {
            if (ftp != null) {
                try {
                    ftp.disconnect();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return false;
    }
src/main/resources/application-dev.yml
@@ -54,7 +54,8 @@
  ftpPort: 21
  ftpUserName: zhbain
  ftpPassword: zhbain@123
  ftpPath: yly/qfqk/
  ftpBasePath: yly
  ftpFilePath: qfqk
  localPath: /home/zhongsong/qfqk/
  ip: http://47.49.21.216:9000
  jsonUrl: /home/zhongsong/qfqk/
src/main/resources/application-test.yml
@@ -54,10 +54,20 @@
  ftpPort: 21
  ftpUserName: arsn
  ftpPassword: 123456
  ftpPath: anbao/
  ftpBasePath: anbao
  ftpFilePath: qfqk
  localPath: D:\\anbao\\
  ip: http://47.49.21.216:9000
  jsonUrl: /home/zhongsong/qfqk/
  jsonUrl: D:\\anbao\\
#  ftpHost: 117.40.91.118
#  ftpPort: 21
#  ftpUserName: zhbain
#  ftpPassword: zhbain@123
#  ftpBasePath: yly
#  ftpFilePath: qfqk
#  localPath: /home/zhongsong/qfqk/
#  ip: http://47.49.21.216:9000
#  jsonUrl: /home/zhongsong/qfqk/
#第三方登陆
social:
src/main/resources/application.yml
@@ -196,6 +196,7 @@
    skip-url:
      - /blade-test/**
      - /blade-user/import-users
      - /zc/**
    #授权认证配置
    auth:
      - method: ALL