Spring MVC中上传文件大小超过限制的异常处理
今天团队里的一个小伙子在写代码的时候,遇到一个问题。他在做上传文件的表单时,限制最大上传文件的大小。但当用户上传的文件超过大小后,虽然后台有报异常,前台却没有错误提示。他拿着这个问题问到了我,我把解决问题的过程记录下来,做个分享。
总体思路
服务端拦截异常,并直接返回值给前台。前台根据返回的值给用户做下一步处理。
主要代码
Spring Boot 配置文件
server.port=8888
# 下面两个参数是设置上传文件大小
multipart.maxFileSize=2MB
multipart.maxRequestSize=2MB
# 下面两个参数是禁用spring的默认异常映射,比如将异常会自动映射到 /error下。
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false捕获文件超过设置大小的异常,并直接返回错误信息
public class RestExceptionHandler {
public String unknownException(Exception ex, WebRequest req) {
System.out.println(ex);
return "too large.";
}
}前端ajax处理
$("#upload").click(function () {
$.ajax({
url: '/upload',
type: 'POST',
cache: false,
data: new FormData($('#uploadForm')[0]),
processData: false,
contentType: false}).done(function(res) {
console.log("done");
}).fail(function(res) {
console.log("fail");
console.log(res['responseText']);
});
})异常会在fail回调函数里被console.log打印出来。
END
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LeFer!
评论