Просмотр исходного кода

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

RuoYi лет назад: 3
Родитель
Сommit
1d1b9501b7

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

@@ -1,7 +1,10 @@
1
 package com.ruoyi.common.core.utils.file;
1
 package com.ruoyi.common.core.utils.file;
2
 
2
 
3
 import java.io.File;
3
 import java.io.File;
4
+import java.util.Objects;
5
+import org.apache.commons.io.FilenameUtils;
4
 import org.apache.commons.lang3.StringUtils;
6
 import org.apache.commons.lang3.StringUtils;
7
+import org.springframework.web.multipart.MultipartFile;
5
 
8
 
6
 /**
9
 /**
7
  * 文件类型工具类
10
  * 文件类型工具类
@@ -46,6 +49,22 @@ public class FileTypeUtils
46
     }
49
     }
47
 
50
 
48
     /**
51
     /**
52
+     * 获取文件名的后缀
53
+     * 
54
+     * @param file 表单文件
55
+     * @return 后缀名
56
+     */
57
+    public static final String getExtension(MultipartFile file)
58
+    {
59
+        String extension = FilenameUtils.getExtension(file.getOriginalFilename());
60
+        if (StringUtils.isEmpty(extension))
61
+        {
62
+            extension = MimeTypeUtils.getExtension(Objects.requireNonNull(file.getContentType()));
63
+        }
64
+        return extension;
65
+    }
66
+
67
+    /**
49
      * 获取文件类型
68
      * 获取文件类型
50
      * 
69
      * 
51
      * @param photoByte 文件字节码
70
      * @param photoByte 文件字节码

+ 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;
11
 import com.ruoyi.common.core.exception.file.InvalidExtensionException;
11
 import com.ruoyi.common.core.exception.file.InvalidExtensionException;
12
 import com.ruoyi.common.core.utils.DateUtils;
12
 import com.ruoyi.common.core.utils.DateUtils;
13
 import com.ruoyi.common.core.utils.StringUtils;
13
 import com.ruoyi.common.core.utils.StringUtils;
14
+import com.ruoyi.common.core.utils.file.FileTypeUtils;
14
 import com.ruoyi.common.core.utils.file.MimeTypeUtils;
15
 import com.ruoyi.common.core.utils.file.MimeTypeUtils;
15
 import com.ruoyi.common.core.utils.uuid.Seq;
16
 import com.ruoyi.common.core.utils.uuid.Seq;
16
 
17
 
@@ -88,7 +89,7 @@ public class FileUploadUtils
88
     public static final String extractFilename(MultipartFile file)
89
     public static final String extractFilename(MultipartFile file)
89
     {
90
     {
90
         return StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(),
91
         return StringUtils.format("{}/{}_{}.{}", DateUtils.datePath(),
91
-                FilenameUtils.getBaseName(file.getOriginalFilename()), Seq.getId(Seq.uploadSeqType), getExtension(file));
92
+                FilenameUtils.getBaseName(file.getOriginalFilename()), Seq.getId(Seq.uploadSeqType), FileTypeUtils.getExtension(file));
92
     }
93
     }
93
 
94
 
94
     private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException
95
     private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException
@@ -128,7 +129,7 @@ public class FileUploadUtils
128
         }
129
         }
129
 
130
 
130
         String fileName = file.getOriginalFilename();
131
         String fileName = file.getOriginalFilename();
131
-        String extension = getExtension(file);
132
+        String extension = FileTypeUtils.getExtension(file);
132
         if (allowedExtension != null && !isAllowedExtension(extension, allowedExtension))
133
         if (allowedExtension != null && !isAllowedExtension(extension, allowedExtension))
133
         {
134
         {
134
             if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION)
135
             if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION)
@@ -176,20 +177,4 @@ public class FileUploadUtils
176
         }
177
         }
177
         return false;
178
         return false;
178
     }
179
     }
179
-
180
-    /**
181
-     * 获取文件名的后缀
182
-     * 
183
-     * @param file 表单文件
184
-     * @return 后缀名
185
-     */
186
-    public static final String getExtension(MultipartFile file)
187
-    {
188
-        String extension = FilenameUtils.getExtension(file.getOriginalFilename());
189
-        if (StringUtils.isEmpty(extension))
190
-        {
191
-            extension = MimeTypeUtils.getExtension(Objects.requireNonNull(file.getContentType()));
192
-        }
193
-        return extension;
194
-    }
195
 }
180
 }

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

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