1. 在yml中配置上传大小的限制,如下:
spring: servlet: multipart: max-file-size: 512000 # 文件上传大小限制为500kb max-request-size: 512000 # 请求大小限制为500kb
2. 配置全局异常捕获:
@RestControllerAdvice public class CustomExceptionHandler { // 上传文件超过500k,捕获异常:MaxUploadSizeExceededException @ExceptionHandler(MaxUploadSizeExceededException.class) public IMOOCJSONResult handlerMaxUploadFile(MaxUploadSizeExceededException ex) { return IMOOCJSONResult.errorMsg("文件上传大小不能超过500k,请压缩图片或者降低图片质量再上传!"); } }
3. 测试结果:
<1>. 小于500KB的,没问题可以上传成功;
<2>. 大于500KB的,但是小于2M的,会被拦截,测试成功;
<3>. 大于2M的文件,上传直接没有反应,服务器没有报错没有响应,很郁闷。这个时候测试失败
3.3 的解决方案,这问题主要由于tomcat的的文件大小限制,超过了默认的开销大小,就直接取消这个用户请求了,限制了你的访问,这没毛病,只不过没有任何的提示(因为服务器默认你的请求是恶意请求,就直接中断了,不给你回应,这本质是好意~),如果需要提示,则需要再次在yml中新增一个配置项,如下设置-1或者100MB即可
server: tomcat: max-swallow-size: -1 # tomcat默认大小2M,超过2M的文件不会被捕获,需要调整此处大小为100MB或者-1即可