Selaa lähdekoodia

附件解密,图片做单独处理,不做解密

turborao 2 viikkoa sitten
vanhempi
säilyke
64f53594f2

+ 27 - 54
code/base/nckd-jimin-base-helper/src/main/java/nckd/base/helper/FileSECUtils.java

@@ -29,6 +29,7 @@ import java.io.*;
 import java.security.cert.CertificateException;
 import java.security.cert.X509Certificate;
 import java.text.DecimalFormat;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
@@ -175,10 +176,6 @@ public class FileSECUtils {
 
         try {
 
-            //String filePath = "C:\\Users\\turbo_i49t4d3\\Downloads\\PMS项目预算编制维度-01.xlsx";
-           // File file = new File(filePath);
-            //InputStream inputStream1 = new FileInputStream(filePath);
-
             CloseableHttpClient httpclient = null;
             HttpPost post = new HttpPost(url);
             post.addHeader("method~name", "fileDecryptionRest"); //文件解密
@@ -229,64 +226,23 @@ public class FileSECUtils {
     }
 
 
-    /**
-     * 根据地址获得数据的字节流并转换成大小
-     * @param originalPath 文件实际地址
-     * @return
-     */
-    public static long getFileSizeByPath(String originalPath){
-        InputStream inStream=null;
-        ByteArrayOutputStream outStream=null;
-        long size = 0;
-        try {
-            inStream = FileServiceFactory.getAttachmentFileService().getInputStream(originalPath);
-
-            outStream = new ByteArrayOutputStream();
-            byte[] buffer = new byte[1024];
-            int len = 0;
-            while( (len = inStream.read(buffer)) != -1 ){
-                outStream.write(buffer, 0, len);
-            }
-            byte[] bt =  outStream.toByteArray();
-
-            if(null != bt && bt.length > 0){
-                DecimalFormat df = new DecimalFormat("#");
-                size = Integer.parseInt(df.format((double) bt.length));
-
-                logger.info("SEC附件 文件大小: " + size);
-            }else{
-                logger.info("SEC附件 没有从路径上获得内容");
-            }
-            inStream.close();
-            outStream.close();
-
-        } catch (Exception e) {
-            logger.info("SEC附件 文件大小ERR: " + e.getMessage());
-        }finally{
-            try{
-                if(inStream !=null){
-                    inStream.close();
-                }
-                if(outStream !=null){
-                    outStream.close();
-                }
-            } catch (IOException e) {
-                logger.info("SEC附件 文件大小ERR: " + e.getMessage());
-            }
-        }
-        return size;
-    }
-
     public static InputStream processFileWithSEC(String path,InputStream inputStream) {
         File tempFile = null;
         try {
-            logger.info("--------------SEC附件 processFileWithSEC1 ----------------");
+            logger.info("--------------SEC附件解密 processFileWithSEC1 ----------------");
             String filename = getFileNameWithoutExtension(path);
             String filetype = getFileType(path);
+            /**
+             * 判断是否是媒体文件,如果是媒体文件,则不进行处理
+             */
+            boolean isMedia = isMediaFile(filetype);
+            if(isMedia){
+                return inputStream;
+            }
             String filepath =  System.getProperty("java.io.tmpdir") + "/" + filename;
             // 1. 将 InputStream 写入本地临时文件
             tempFile = File.createTempFile(filepath,"."+filetype);
-            logger.info("--------------SEC附件临时路径"+filepath,"."+filetype+" ----------------");
+            logger.info("--------------SEC附件临时路径 "+filepath,"."+filetype+" ----------------");
             tempFile.deleteOnExit(); // 确保 JVM 退出时删除临时文件
 
             try (FileOutputStream fos = new FileOutputStream(tempFile)) {
@@ -368,5 +324,22 @@ public class FileSECUtils {
         return fileName.substring(0, dotIndex);
     }
 
+    public static boolean isMediaFile(String fileType) {
+        if (fileType == null || fileType.isEmpty()) {
+            return false;
+        }
+
+        // 转换为小写,便于匹配
+        String type = fileType.toLowerCase();
+
+        List<String> mediaTypes = Arrays.asList(
+                "mp4", "mkv", "flv", "avi", "mov", "wmv",
+                "mpeg", "mpg", "3gp", "webm", "ts", "m4v",
+                "jpg", "jpeg", "png", "gif", "bmp", "webp",
+                "tiff", "svg", "ico", "heic","pic"
+        );
+
+        return mediaTypes.contains(type);
+    }
 
 }