From 55546dfc80bd2ec1be8786b19f53df4e1c1e44e5 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期二, 13 七月 2021 13:49:47 +0800
Subject: [PATCH] 发布 v2.5.1 针对 v2.5.0 版本新特性bug修复

---
 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java |   49 ++++++++++++++++++++++++++++---------------------
 1 files changed, 28 insertions(+), 21 deletions(-)

diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
index 9552d0d..22d53c7 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
@@ -1,21 +1,24 @@
 package com.ruoyi.common.utils.file;
 
-import java.io.File;
-import java.io.IOException;
-import org.apache.commons.io.FilenameUtils;
-import org.springframework.web.multipart.MultipartFile;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.lang.Validator;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
 import com.ruoyi.common.config.RuoYiConfig;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.exception.file.FileNameLengthLimitExceededException;
 import com.ruoyi.common.exception.file.FileSizeLimitExceededException;
 import com.ruoyi.common.exception.file.InvalidExtensionException;
 import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.common.utils.StringUtils;
-import com.ruoyi.common.utils.uuid.IdUtils;
+import org.apache.commons.io.FilenameUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.IOException;
 
 /**
  * 鏂囦欢涓婁紶宸ュ叿绫�
- * 
+ *
  * @author ruoyi
  */
 public class FileUploadUtils
@@ -89,7 +92,7 @@
      *
      * @param baseDir 鐩稿搴旂敤鐨勫熀鐩綍
      * @param file 涓婁紶鐨勬枃浠�
-     * @param extension 涓婁紶鏂囦欢绫诲瀷
+     * @param allowedExtension 涓婁紶鏂囦欢绫诲瀷
      * @return 杩斿洖涓婁紶鎴愬姛鐨勬枃浠跺悕
      * @throws FileSizeLimitExceededException 濡傛灉瓒呭嚭鏈�澶уぇ灏�
      * @throws FileNameLengthLimitExceededException 鏂囦欢鍚嶅お闀�
@@ -111,7 +114,8 @@
         String fileName = extractFilename(file);
 
         File desc = getAbsoluteFile(baseDir, fileName);
-        file.transferTo(desc);
+		desc = FileUtil.touch(desc);
+		FileUtil.writeFromStream(file.getInputStream(), desc);
         String pathFileName = getPathFileName(baseDir, fileName);
         return pathFileName;
     }
@@ -123,7 +127,7 @@
     {
         String fileName = file.getOriginalFilename();
         String extension = getExtension(file);
-        fileName = DateUtils.datePath() + "/" + IdUtils.fastUUID() + "." + extension;
+        fileName = DateUtils.datePath() + "/" + IdUtil.fastUUID() + "." + extension;
         return fileName;
     }
 
@@ -131,22 +135,20 @@
     {
         File desc = new File(uploadDir + File.separator + fileName);
 
-        if (!desc.getParentFile().exists())
+        if (!desc.exists())
         {
-            desc.getParentFile().mkdirs();
+            if (!desc.getParentFile().exists())
+            {
+                desc.getParentFile().mkdirs();
+            }
         }
-        // 瑙e喅undertow鏂囦欢涓婁紶bug,鍥犲簳灞傚疄鐜颁笉鍚�,鏃犻渶鍒涘缓鏂版枃浠�
-//        if (!desc.exists())
-//        {
-//            desc.createNewFile();
-//        }
         return desc;
     }
 
     private static final String getPathFileName(String uploadDir, String fileName) throws IOException
     {
         int dirLastIndex = RuoYiConfig.getProfile().length() + 1;
-        String currentDir = StringUtils.substring(uploadDir, dirLastIndex);
+        String currentDir = StrUtil.subSuf(uploadDir, dirLastIndex);
         String pathFileName = Constants.RESOURCE_PREFIX + "/" + currentDir + "/" + fileName;
         return pathFileName;
     }
@@ -187,6 +189,11 @@
                 throw new InvalidExtensionException.InvalidMediaExtensionException(allowedExtension, extension,
                         fileName);
             }
+            else if (allowedExtension == MimeTypeUtils.VIDEO_EXTENSION)
+            {
+                throw new InvalidExtensionException.InvalidVideoExtensionException(allowedExtension, extension,
+                        fileName);
+            }
             else
             {
                 throw new InvalidExtensionException(allowedExtension, extension, fileName);
@@ -216,17 +223,17 @@
 
     /**
      * 鑾峰彇鏂囦欢鍚嶇殑鍚庣紑
-     * 
+     *
      * @param file 琛ㄥ崟鏂囦欢
      * @return 鍚庣紑鍚�
      */
     public static final String getExtension(MultipartFile file)
     {
         String extension = FilenameUtils.getExtension(file.getOriginalFilename());
-        if (StringUtils.isEmpty(extension))
+        if (Validator.isEmpty(extension))
         {
             extension = MimeTypeUtils.getExtension(file.getContentType());
         }
         return extension;
     }
-}
\ No newline at end of file
+}

--
Gitblit v1.9.3