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

feat:
新增最大文件限制报错处理

18339543638 2 лет назад
Родитель
Сommit
7caf9b6e48

+ 17 - 0
tr-plugins/tr-spring-boot-starter-plugin-web/src/main/java/cn/tr/plugin/web/TrWebAutoConfiguration.java

@@ -1,6 +1,10 @@
 package cn.tr.plugin.web;
 
+import cn.hutool.extra.spring.SpringUtil;
 import cn.tr.core.enums.WebFilterOrderEnum;
+import cn.tr.core.exception.TRExcCode;
+import cn.tr.core.pojo.CommonResult;
+import cn.tr.core.strategy.ExceptionStrategy;
 import cn.tr.plugin.web.config.PageStrategyConfig;
 import cn.tr.plugin.web.config.TrWebMvcConfig;
 import cn.tr.plugin.web.config.jackson.mapper.core.ObjectMapperConfig;
@@ -10,10 +14,14 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import org.springframework.beans.factory.config.BeanPostProcessor;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.autoconfigure.jackson.JacksonProperties;
+import org.springframework.boot.autoconfigure.web.servlet.MultipartProperties;
 import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.context.annotation.Bean;
+import org.springframework.web.multipart.MaxUploadSizeExceededException;
 import org.springframework.web.servlet.HandlerInterceptor;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import javax.annotation.PostConstruct;
 import java.util.*;
 /**
  * @ClassName : WebConfig
@@ -23,6 +31,15 @@ import java.util.*;
  */
 public class TrWebAutoConfiguration implements BeanPostProcessor {
 
+    @PostConstruct
+    public void init(){
+        MultipartProperties multipartProperties = SpringUtil.getBean(MultipartProperties.class);
+        //处理业务异常 ServiceException
+        ExceptionStrategy.tr.registerThrowableHandler(MaxUploadSizeExceededException.class,((request, ex) ->{
+            return CommonResult.error(TRExcCode.USER_ERROR_A0702, "用户上传文件大小不能超过"+multipartProperties.getMaxFileSize().toMegabytes()+"M");
+        } ));
+    }
+
     @Bean
     @ConditionalOnMissingBean(ObjectMapper.class)
     public ObjectMapper objectMapper(){