1、application-dev.ym配置大小
spring:
#图片限制
servlet:
maxparts: 1
maxFileSize: 5242880 #5M转换成bytes 5 * 1024 * 1024
#授权多数据源修改不了 用默认的redis 系统中采用redis2集群
2、
package com.fcb.car.biz.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fcb.car.biz.infra.config.CommonConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.codec.ServerCodecConfigurer;
import org.springframework.http.codec.json.Jackson2JsonDecoder;
import org.springframework.http.codec.json.Jackson2JsonEncoder;
import org.springframework.http.codec.multipart.MultipartHttpMessageReader;
import org.springframework.http.codec.multipart.SynchronossPartHttpMessageReader;
import org.springframework.web.reactive.config.EnableWebFlux;
import org.springframework.web.reactive.config.WebFluxConfigurer;
/**
* @author: mrh
* @date: 2021/4/10 10:18
* @description:
*/
@Configuration
@EnableWebFlux
public class WebConfig implements WebFluxConfigurer {
@Autowired
private CommonConfig commonConfig;
@Override
public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) {
SynchronossPartHttpMessageReader partReader = new SynchronossPartHttpMessageReader();
partReader.setMaxParts(Integer.parseInt(commonConfig.getMaxparts()));
//字节bytes
partReader.setMaxDiskUsagePerPart(Integer.parseInt(commonConfig.getMaxFileSize()));
partReader.setEnableLoggingRequestDetails(true);
// 单文件上传大小限制
MultipartHttpMessageReader multipartReader = new MultipartHttpMessageReader(partReader);
multipartReader.setEnableLoggingRequestDetails(true);
configurer.defaultCodecs().multipartReader(multipartReader);
}
}
package com.fcb.car.biz.infra.config;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;
/**
* @author lml
* @description TODO
* @date 2021-4-8 10:14
**/
@Component
@RefreshScope
@Slf4j
@Setter
@Getter
public class CommonConfig {
@Value("${spring.servlet.maxparts}")
private String maxparts;
@Value("${spring.servlet.maxFileSize}")
private String maxFileSize;
}
package com.fcb.car.biz.aspect;
import com.evergrande.cloud.base.util.StringUtils;
import com.evergrande.cloud.web.dto.ResponseDto;
import com.fcb.car.biz.infra.constant.Constant;
import com.fcb.car.biz.infra.exception.BusinessException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.MessageSource;
import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.core.codec.DecodingException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.server.ServerWebExchange;
import java.util.Locale;
import java.util.Optional;
/**
* 自定义异常处理类
*
* @author yqf
* @since 2021-04-09
*/
@RestControllerAdvice
@Order(Ordered.HIGHEST_PRECEDENCE)
public class MyBaseControllerAdvice {
private static final Logger log = LoggerFactory.getLogger(MyBaseControllerAdvice.class);
@Autowired
private MessageSource messageSource;
@ExceptionHandler({BusinessException.class})
public ResponseEntity<ResponseDto<String>> process(BusinessException exception, ServerWebExchange exchange) {
String message = exception.getMessage();
if (StringUtils.isEmpty(message)) {
message = messageSource.getMessage(exception.getCode(), (Object[])null, (Locale) Optional.ofNullable(exchange.getLocaleContext().getLocale()).orElse(Locale.CHINA));
}
ResponseEntity responseEntity = new ResponseEntity(new ResponseDto(exception.getCode(), message), HttpStatus.OK);
log.error("[MyBaseControllerAdvice]Handle Exception:{},Result:{}", message, responseEntity);
return responseEntity;
}
@ExceptionHandler(DecodingException.class)
public ResponseDto uploadDecodingException(DecodingException e) {
log.info("decodingException"+e.getMessage());
return new ResponseDto(Constant.ConstantError.ERROR.getCode(), "不能上传超过5M的图片");
}
}