Sfoglia il codice sorgente

用户头像上传限制只能为图片格式

RuoYi 3 anni fa
parent
commit
1d1b9501b7

+ 19 - 0
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileTypeUtils.java

@@ -1,7 +1,10 @@
 package com.ruoyi.common.core.utils.file;
 package com.ruoyi.common.core.utils.file;
 
 
 import java.io.File;
 import java.io.File;
+import java.util.Objects;
+import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.multipart.MultipartFile;
 
 
 /**
 /**
  * 文件类型工具类
  * 文件类型工具类
@@ -45,6 +48,22 @@ public class FileTypeUtils
         return fileName.substring(separatorIndex + 1).toLowerCase();
         return fileName.substring(separatorIndex + 1).toLowerCase();
     }
     }
 
 
+    /**
+     * 获取文件名的后缀
+     * 
+     * @param file 表单文件
+     * @return 后缀名
+     */
+    public static final String getExtension(MultipartFile file)
+    {
+        String extension = FilenameUtils.getExtension(file.getOriginalFilename());
+        if (StringUtils.isEmpty(extension))
+        {
+            extension = MimeTypeUtils.getExtension(Objects.requireNonNull(file.getContentType()));
+        }
+        return extension;
+    }
+
     /**
     /**
      * 获取文件类型
      * 获取文件类型
      * 
      * 

+ 3 - 18
ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/FileUploadUtils.java

@@ -11,6 +11,7 @@ import com.ruoyi.common.core.exception.file.FileSizeLimitExceededException;
 import com.ruoyi.common.core.exception.file.InvalidExtensionException;
 import com.ruoyi.common.core.exception.file.InvalidExtensionException;
 import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.utils.file.FileTypeUtils;
 import com.ruoyi.common.core.utils.file.MimeTypeUtils;
 import com.ruoyi.common.core.utils.file.MimeTypeUtils;
 import com.ruoyi.common.core.utils.uuid.Seq;
 import com.ruoyi.common.core.utils.uuid.Seq;
 
 
@@ -88,7 +89,7 @@ public class FileUploadUtils
     public static final String extractFilename(MultipartFile file)
     public static final String extractFilename(MultipartFile file)
     {
     {
         return StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(),
         return StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(),
-                FilenameUtils.getBaseName(file.getOriginalFilename()), Seq.getId(Seq.uploadSeqType), getExtension(file));
+                FilenameUtils.getBaseName(file.getOriginalFilename()), Seq.getId(Seq.uploadSeqType), FileTypeUtils.getExtension(file));
     }
     }
 
 
     private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException
     private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException
@@ -128,7 +129,7 @@ public class FileUploadUtils
         }
         }
 
 
         String fileName = file.getOriginalFilename();
         String fileName = file.getOriginalFilename();
-        String extension = getExtension(file);
+        String extension = FileTypeUtils.getExtension(file);
         if (allowedExtension != null && !isAllowedExtension(extension, allowedExtension))
         if (allowedExtension != null && !isAllowedExtension(extension, allowedExtension))
         {
         {
             if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION)
             if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION)
@@ -176,20 +177,4 @@ public class FileUploadUtils
         }
         }
         return false;
         return false;
     }
     }
-
-    /**
-     * 获取文件名的后缀
-     * 
-     * @param file 表单文件
-     * @return 后缀名
-     */
-    public static final String getExtension(MultipartFile file)
-    {
-        String extension = FilenameUtils.getExtension(file.getOriginalFilename());
-        if (StringUtils.isEmpty(extension))
-        {
-            extension = MimeTypeUtils.getExtension(Objects.requireNonNull(file.getContentType()));
-        }
-        return extension;
-    }
 }
 }

+ 9 - 2
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysProfileController.java

@@ -1,6 +1,6 @@
 package com.ruoyi.system.controller;
 package com.ruoyi.system.controller;
 
 
-import java.io.IOException;
+import java.util.Arrays;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -13,6 +13,8 @@ import org.springframework.web.multipart.MultipartFile;
 import com.ruoyi.common.core.constant.UserConstants;
 import com.ruoyi.common.core.constant.UserConstants;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.utils.file.FileTypeUtils;
+import com.ruoyi.common.core.utils.file.MimeTypeUtils;
 import com.ruoyi.common.core.web.controller.BaseController;
 import com.ruoyi.common.core.web.controller.BaseController;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.common.log.annotation.Log;
 import com.ruoyi.common.log.annotation.Log;
@@ -126,11 +128,16 @@ public class SysProfileController extends BaseController
      */
      */
     @Log(title = "用户头像", businessType = BusinessType.UPDATE)
     @Log(title = "用户头像", businessType = BusinessType.UPDATE)
     @PostMapping("/avatar")
     @PostMapping("/avatar")
-    public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) throws IOException
+    public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file)
     {
     {
         if (!file.isEmpty())
         if (!file.isEmpty())
         {
         {
             LoginUser loginUser = SecurityUtils.getLoginUser();
             LoginUser loginUser = SecurityUtils.getLoginUser();
+            String extension = FileTypeUtils.getExtension(file);
+            if (!StringUtils.equalsAnyIgnoreCase(extension, MimeTypeUtils.IMAGE_EXTENSION))
+            {
+                return AjaxResult.error("文件格式不正确,请上传" + Arrays.toString(MimeTypeUtils.IMAGE_EXTENSION) + "格式");
+            }
             R<SysFile> fileResult = remoteFileService.upload(file);
             R<SysFile> fileResult = remoteFileService.upload(file);
             if (StringUtils.isNull(fileResult) || StringUtils.isNull(fileResult.getData()))
             if (StringUtils.isNull(fileResult) || StringUtils.isNull(fileResult.getData()))
             {
             {