我想捕获此异常,而不是简单地将500退还给最终用户,这至少在我的应用程序中是不好的体验。 目的是使用户返回到表单页面,并提供一些反馈,以便他们再次尝试。
当前的经验是将用户退回500,然后在日志中打印以下内容;
Caused by: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (157552) exceeds the configured maximum (1024)
答案 0 :(得分:1)
为this开局而@ james-kleeh;
但是,当我扩展StandardServletMultipartResolver
实现时(这是默认设置),我只能在Grails 4.0.0.M2上使用它。然后,可以继续从config(yaml)解析maxFileSize限制。
public class MyMultipartResolver extends StandardServletMultipartResolver {
static final String FILE_SIZE_EXCEEDED_ERROR = "fileSizeExceeded"
public MultipartHttpServletRequest resolveMultipart(HttpServletRequest request) {
try {
return super.resolveMultipart(request)
} catch (MaxUploadSizeExceededException e) {
request.setAttribute(FILE_SIZE_EXCEEDED_ERROR, true)
return new DefaultMultipartHttpServletRequest(request, new LinkedMultiValueMap<String, MultipartFile>(), new LinkedHashMap<String, String[]>(), new LinkedHashMap<String, String>());
}
}
}
在resources.groovy中具有以下内容;
// catch exception when max file size is exceeded
multipartResolver(MyMultipartResolver)
您需要随后检查控制器中的 FILE_SIZE_EXCEEDED_ERROR 属性并进行相应的处理。