From 6537ee75e52fb92a18a1e667531451f45179e7f2 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期四, 03 十一月 2022 14:00:15 +0800
Subject: [PATCH] ftp 引起的不给

---
 java110-core/src/main/java/com/java110/core/client/FtpUploadTemplate.java |  127 +++++++++++++++++++++++++++++++++--------
 1 files changed, 101 insertions(+), 26 deletions(-)

diff --git a/java110-core/src/main/java/com/java110/core/client/FtpUploadTemplate.java b/java110-core/src/main/java/com/java110/core/client/FtpUploadTemplate.java
old mode 100644
new mode 100755
index f54d2cc..0a7445f
--- a/java110-core/src/main/java/com/java110/core/client/FtpUploadTemplate.java
+++ b/java110-core/src/main/java/com/java110/core/client/FtpUploadTemplate.java
@@ -7,7 +7,7 @@
 import org.apache.commons.net.ftp.FTPFile;
 import org.apache.commons.net.ftp.FTPReply;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import com.java110.core.log.LoggerFactory;
 import org.springframework.stereotype.Component;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -16,6 +16,7 @@
 
 @Component
 public class FtpUploadTemplate {
+
     private static Logger logger = LoggerFactory.getLogger(FtpUploadTemplate.class);
 
     /*
@@ -24,17 +25,21 @@
      * private static String userPassword ="MXUsssMjhssE+*=a3C4\\0";//瀵嗙爜
      */
     private static String ftpPath = "uploadFiles"; // 鏂囦欢涓婁紶鐩綍
-
     private static String LOCAL_CHARSET = "GBK";
     private static String SERVER_CHARSET = "ISO-8859-1";
     private final static String localpath = "F:/";//涓嬭浇鍒癋鐩樹笅
     private final static String fileSeparator = System.getProperty("file.separator");
-
     private final static String DEFAULT_IMG_SUFFIX = ".jpg";
-
     private final static String IMAGE_DEFAULT_PATH = "img/";
 
-    private final static String VIDEO_PATH = "video/";
+
+    public final static String FTP_DOMAIN = "FTP_DOMAIN";
+    public final static String FTP_SERVER = "FTP_SERVER";
+    public final static String FTP_PORT = "FTP_PORT";
+    public final static String FTP_USERNAME = "FTP_USERNAME";
+    public final static String FTP_USERPASSWORD = "FTP_USERPASSWORD";
+    public final static String FTP_PATH = "FTP_PATH";
+
 
     /*
      *鍥剧墖涓婁紶宸ュ叿鏂规硶
@@ -54,12 +59,7 @@
             ftpClient.login(userName, userPassword);
             ftpClient.enterLocalPassiveMode();
             ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
-            if (imageBase64.contains("mp4") || imageBase64.contains("MP4") || imageBase64.contains("AVI") || imageBase64.contains("avi")
-                    || imageBase64.contains("WMV") || imageBase64.contains("wmv")) {
-                ftpPath = ftpPath + VIDEO_PATH + DateUtil.getNowII() + "/";
-            } else {
-                ftpPath = ftpPath + IMAGE_DEFAULT_PATH + DateUtil.getNowII() + "/";
-            }
+            ftpPath = ftpPath + IMAGE_DEFAULT_PATH + DateUtil.getNowII() + "/";
             mkDir(ftpClient, ftpPath);// 鍒涘缓鐩綍
             // 璁剧疆涓婁紶鐩綍 must
             ftpClient.changeWorkingDirectory(ftpPath);
@@ -67,7 +67,6 @@
                 LOCAL_CHARSET = "UTF-8";
             }
             fileName = UUID.randomUUID().toString();
-
             if (imageBase64.contains("data:image/png;base64,")) {
                 imageBase64 = imageBase64.replace("data:image/png;base64,", "");
                 fileName += ".png";
@@ -80,9 +79,6 @@
             } else if (imageBase64.contains("data:application/octet-stream;base64,")) {
                 imageBase64 = imageBase64.replace("data:application/octet-stream;base64,", "");
                 fileName += ".jpg";
-            } else if (imageBase64.contains("mp4") || imageBase64.contains("MP4") || imageBase64.contains("AVI") || imageBase64.contains("avi")
-                    || imageBase64.contains("WMV") || imageBase64.contains("wmv")) {
-                fileName += ".mp4";
             } else {
                 fileName += ".jpg";
             }
@@ -93,12 +89,9 @@
                 System.out.println("this file exist ftp");
                 ftpClient.deleteFile(fs[0].getName());
             }
-
-
             byte[] context = Base64Convert.base64ToByte(imageBase64);
             is = new ByteArrayInputStream(context);
             boolean saveFlag = ftpClient.storeFile(fileName, is);
-
             if (!saveFlag) {
                 throw new IllegalArgumentException("瀛樺偍鏂囦欢澶辫触");
             }
@@ -116,14 +109,8 @@
                 logger.error("鍏抽棴ftpClient 澶辫触", e);
             }
         }
-        if (imageBase64.contains("mp4") || imageBase64.contains("MP4") || imageBase64.contains("AVI") || imageBase64.contains("avi")
-                || imageBase64.contains("WMV") || imageBase64.contains("wmv")) {
-            return VIDEO_PATH + DateUtil.getNowII() + "/" + fileName;
-        } else {
-            return IMAGE_DEFAULT_PATH + DateUtil.getNowII() + "/" + fileName;
-        }
+        return IMAGE_DEFAULT_PATH + DateUtil.getNowII() + "/" + fileName;
     }
-
 
     /*
      *鏂囦欢涓婁紶宸ュ叿鏂规硶
@@ -176,6 +163,59 @@
         return fileName;
     }
 
+    /*
+     *鏂囦欢涓婁紶宸ュ叿鏂规硶
+     */
+    public String upload(InputStream inputStream, String server, int port,
+                         String userName, String userPassword, String fileName) {
+        FTPClient ftpClient = null;
+        String ftpPath = "/";
+
+        if(fileName.contains("/")){
+            ftpPath = fileName.substring(0,fileName.lastIndexOf("/"));
+        }
+
+        try {
+            // request.setCharacterEncoding("utf-8");
+
+            ftpClient = new FTPClient();
+            if (!ftpClient.isConnected()) {
+                ftpClient.connect(server, port);
+            }
+            ftpClient.login(userName, userPassword);
+            ftpClient.enterLocalPassiveMode();
+            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
+            mkDir(ftpClient, ftpPath);// 鍒涘缓鐩綍
+            // 璁剧疆涓婁紶鐩綍 must
+            ftpClient.changeWorkingDirectory(ftpPath);
+            if (FTPReply.isPositiveCompletion(ftpClient.sendCommand("OPTS UTF8", "ON"))) {// 寮�鍚湇鍔″櫒瀵筓TF-8鐨勬敮鎸侊紝濡傛灉鏈嶅姟鍣ㄦ敮鎸佸氨鐢║TF-8缂栫爜锛屽惁鍒欏氨浣跨敤鏈湴缂栫爜锛圙BK锛�.
+                LOCAL_CHARSET = "UTF-8";
+            }
+            //fileName = new String(uploadFile.getOriginalFilename().getBytes(LOCAL_CHARSET), SERVER_CHARSET);
+            /*fileName = id + "-" + fileName;// 鏋勫缓涓婁紶鍒版湇鍔″櫒涓婄殑鏂囦欢鍚� 20-鏂囦欢鍚�.鍚庣紑*/
+            FTPFile[] fs = ftpClient.listFiles(fileName);
+            if (fs.length == 0) {
+                System.out.println("this file not exist ftp");
+            } else if (fs.length == 1) {
+                System.out.println("this file exist ftp");
+                ftpClient.deleteFile(fs[0].getName());
+            }
+            boolean saveFlag = ftpClient.storeFile(fileName, inputStream);
+            if (!saveFlag) {
+                throw new IllegalArgumentException("瀛樺偍鏂囦欢澶辫触");
+            }
+        } catch (Exception e) {
+            logger.error("涓婁紶鏂囦欢澶辫触", e);
+            throw new IllegalArgumentException("涓婁紶鏂囦欢澶辫触");
+        } finally {
+            try {
+                ftpClient.disconnect();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return fileName;
+    }
     /*
      *鏂囦欢涓嬭浇宸ュ叿鏂规硶
      */
@@ -232,7 +272,6 @@
         FtpUploadTemplate ftpUploadTemplate = new FtpUploadTemplate();
         String img = ftpUploadTemplate.download("/hc/img/20200518/", "ed05abae-2eca-40ff-81a8-b586ff2e6a36.jpg",
                 "118.89.243.11", 617, "hcdemo", "45j74jpWTf7bNhnC");
-
         System.out.printf("img=" + img);
     }
 
@@ -361,4 +400,40 @@
         }
     }
 
+
+    public InputStream download(String fileName, String server, int port, String userName, String userPassword) {
+        InputStream is = null;
+        ByteArrayOutputStream bos = null;
+        ByteArrayInputStream fis = null;
+        FTPClient ftpClient = new FTPClient();
+        try {
+            if (!ftpClient.isConnected()) {
+                ftpClient.connect(server, port);
+            }
+            ftpClient.login(userName, userPassword);
+            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
+            ftpClient.enterLocalPassiveMode();
+            int reply = ftpClient.getReplyCode();
+            if (!FTPReply.isPositiveCompletion(reply)) {
+                ftpClient.disconnect();
+            }
+            String f = new String(
+                    (fileName).getBytes("GBK"),
+                    FTP.DEFAULT_CONTROL_ENCODING);
+            is = ftpClient.retrieveFileStream(f);// 鑾峰彇杩滅▼ftp涓婃寚瀹氭枃浠剁殑InputStream
+            if (null == is) {
+                throw new FileNotFoundException(fileName);
+            }
+
+        } catch (Exception e) {
+            logger.error("ftp閫氳繃鏂囦欢鍚嶇О鑾峰彇杩滅▼鏂囦欢娴�", e);
+        } finally {
+            try {
+                //closeConnect(ftpClient);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return null;
+    }
 }

--
Gitblit v1.8.0