首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grails3文件上载maxFileSize限制

Grails3文件上载maxFileSize限制
EN

Stack Overflow用户
提问于 2015-04-24 19:08:48
回答 6查看 10.8K关注 0票数 17

我正在尝试更新Grails 3中的文件上传maxFileSize限制,并尝试了src/main/resources/application.propertiesapplication.groovyapplication.yml中的配置,但它仍然抛出异常

代码语言:javascript
复制
Class
    org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException
Message
    the request was rejected because its size (154738) exceeds the configured maximum (128000)

关于在Grails 3应用程序中配置什么以及在哪里配置,有什么帮助吗?

EN

回答 6

Stack Overflow用户

发布于 2015-11-05 05:13:54

Grails 3和4

解决方案是在application.yml文件中设置maxFileSizemaxRequestSize限制。一定要有这样的东西:

代码语言:javascript
复制
grails:
    controllers:
        upload:
            maxFileSize: 2000000
            maxRequestSize: 2000000

2000000替换为您希望用于文件上传和整个请求的最大字节的数量。Grails 3Grails 4 default为128000 (~128KB)。

常见问题

1.如何从MB转换为字节?

代码语言:javascript
复制
YOUR_MAX_SIZE_IN_MB * 1024 * 1024 = BYTES

例如,将5MB转换为字节

代码语言:javascript
复制
5 * 1024 * 1024 = **5242880** bytes

2.安全

引用自OWASP

将文件大小限制为最大值,以防止拒绝服务攻击

因此,存在这些限制是为了防止DoS攻击和强制执行整体应用程序性能(更大的请求大小==更多从服务器使用的内存)。

3. maxRequestSize**?** 和的正确值是什么

这取决于应用程序的类型,但通常情况下,将它们保持得太高并不是一个好主意。如果你真的需要上传大文件,也许你应该开发(或使用)一个专用的(和独立的)服务。

票数 50
EN

Stack Overflow用户

发布于 2015-10-06 23:38:50

部分问题是设置最大文件大小。另一个问题是如何优雅地处理该错误。

下面是我的bean定义:

代码语言:javascript
复制
multipartResolver(MyMultipartResolver) {
    maxUploadSize = (5*1024*1024)
}

下面是我的实现:

代码语言:javascript
复制
public class MyMultipartResolver extends CommonsMultipartResolver {

    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>());
        }
    }
}

其想法是检查控制器或筛选器中的request属性,以确定文件是否太大。

票数 8
EN

Stack Overflow用户

发布于 2015-04-25 04:36:47

我尝试在application.properties或application.yml中设置新的最大值也没有成功。

但是,使用conf/spring/resources.groovy中的bean定义是可行的:

代码语言:javascript
复制
import javax.servlet.MultipartConfigElement

// Place your Spring DSL code here
beans = {
   multipartResolver(org.springframework.web.multipart.commons.CommonsMultipartResolver){
        maxInMemorySize=1000000
        maxUploadSize=100000000
        //uploadTempDir="/tmp"
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29845943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档