【问题标题】:Grails4 - catching file maxFileSize limit when exceeded on uploading a fileGrails4 - 在上传文件时捕获文件 maxFileSize 限制
【发布时间】:2019-06-19 07:30:14
【问题描述】:

我想捕捉这个异常,而不是简单地向最终用户返回一个 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)

【问题讨论】:

    标签: exception grails grails-4


    【解决方案1】:

    感谢@james-kleeh 为this 抢占先机;

    但是当我扩展默认使用的StandardServletMultipartResolver 实现时,我只能在 Grails 4.0.0.M2 上使用它。然后 maxFileSize 限制继续从 config (yaml) 解决。

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

    【讨论】:

      猜你喜欢
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-05
      • 2013-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多