【问题标题】:Grails 3.3.x handle file upload max size exceeded exceptionGrails 3.3.x 处理文件上传最大大小超出异常
【发布时间】:2019-10-15 00:11:56
【问题描述】:

我正在阅读这篇关于文件上传的教程:https://guides.grails.org/grails-upload-file/guide/index.html

但即使文件大小限制设置为 25MB,也没有描述当上传的文件超过此值时如何处理 FileUploadBase$SizeLimitExceededException 异常。如果有限制,即使它太大,有人会碰到它并想向用户显示一个很好的错误,但异常似乎发生在执行我的控制器代码之前。

问题是:如何在 Grails 3.3.x 应用程序上处理这种异常?

【问题讨论】:

  • 查看 James Kleeh 在stackoverflow.com/questions/29845943/… 的回答。
  • 2015 年的答案对 Grails 3.3.10 有效吗?
  • Pablo 你有想过这个吗?我在使用 Grails 3.2.12 时遇到问题。我可以使用 James Kleeh 的答案检查异常,但 servlet 似乎开始循环。
  • Grails 无法做到这一点。基本上所有答案都说增加限制,并且没有关于实际捕获异常并从控制器优雅地处理它的答案。我想因为这实际上是由 Spring 而不是 Grails 处理的,所以一些 Spring 解决方法应该是可能的,但是我不知道。

标签: grails grails-3.3


【解决方案1】:

我认为在 2MB 文件大小之后,James Kleeh 解决方案存在 Tomcat max-swallow-size 问题,导致多个异常。

https://github.com/grails/grails-core/issues/9378

我继续使用 Javascript 并至少进行了客户端验证。见下文:

function validateSize() {
    var fileSize = document.getElementById("uploadFile").files[0];
    var sizeInMb = (fileSize.size / 1024) / 1024;
    var sizeLimit = 10;
    if (sizeInMb > sizeLimit) {
        alert('File size must be less than 10 MB');
        return false;
    }
    showSpinner();
    return true;
}

<input type="submit" value="I Accept" class="btn btn-success" onclick="return validateSize()"/>

【讨论】:

  • 我也做了同样的事情,尽管客户端验证并不能解决真正的问题,只是一种可以轻松覆盖的姑息疗法。
猜你喜欢
  • 2020-10-15
  • 2014-01-25
  • 2011-11-12
  • 2015-12-28
  • 2019-07-24
  • 2018-07-26
  • 1970-01-01
  • 2012-03-13
  • 1970-01-01
相关资源
最近更新 更多