Grails4-在上传文件时超过文件maxFileSize限制

时间:2019-06-19 07:30:14

标签: exception grails grails-4

我想捕获此异常,而不是简单地将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)

1 个答案:

答案 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 属性并进行相应的处理。