Преглед изворни кода

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

RuoYi пре 3 година
родитељ
комит
1d1b9501b7

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

@@ -1,7 +1,10 @@
1 1
 package com.ruoyi.common.core.utils.file;
2 2
 
3 3
 import java.io.File;
4
+import java.util.Objects;
5
+import org.apache.commons.io.FilenameUtils;
4 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 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 11
 import com.ruoyi.common.core.exception.file.InvalidExtensionException;
12 12
 import com.ruoyi.common.core.utils.DateUtils;
13 13
 import com.ruoyi.common.core.utils.StringUtils;
14
+import com.ruoyi.common.core.utils.file.FileTypeUtils;
14 15
 import com.ruoyi.common.core.utils.file.MimeTypeUtils;
15 16
 import com.ruoyi.common.core.utils.uuid.Seq;
16 17
 
@@ -88,7 +89,7 @@ public class FileUploadUtils
88 89
     public static final String extractFilename(MultipartFile file)
89 90
     {
90 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 95
     private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException
@@ -128,7 +129,7 @@ public class FileUploadUtils
128 129
         }
129 130
 
130 131
         String fileName = file.getOriginalFilename();
131
-        String extension = getExtension(file);
132
+        String extension = FileTypeUtils.getExtension(file);
132 133
         if (allowedExtension != null && !isAllowedExtension(extension, allowedExtension))
133 134
         {
134 135
             if (allowedExtension == MimeTypeUtils.IMAGE_EXTENSION)
@@ -176,20 +177,4 @@ public class FileUploadUtils
176 177
         }
177 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 1
 package com.ruoyi.system.controller;
2 2
 
3
-import java.io.IOException;
3
+import java.util.Arrays;
4 4
 import org.springframework.beans.factory.annotation.Autowired;
5 5
 import org.springframework.web.bind.annotation.GetMapping;
6 6
 import org.springframework.web.bind.annotation.PostMapping;
@@ -13,6 +13,8 @@ import org.springframework.web.multipart.MultipartFile;
13 13
 import com.ruoyi.common.core.constant.UserConstants;
14 14
 import com.ruoyi.common.core.domain.R;
15 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 18
 import com.ruoyi.common.core.web.controller.BaseController;
17 19
 import com.ruoyi.common.core.web.domain.AjaxResult;
18 20
 import com.ruoyi.common.log.annotation.Log;
@@ -126,11 +128,16 @@ public class SysProfileController extends BaseController
126 128
      */
127 129
     @Log(title = "用户头像", businessType = BusinessType.UPDATE)
128 130
     @PostMapping("/avatar")
129
-    public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) throws IOException
131
+    public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file)
130 132
     {
131 133
         if (!file.isEmpty())
132 134
         {
133 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 141
             R<SysFile> fileResult = remoteFileService.upload(file);
135 142
             if (StringUtils.isNull(fileResult) || StringUtils.isNull(fileResult.getData()))
136 143
             {