圣杯 3、圣杯 4、圣杯 5 和圣杯 6
解决办法是设置maxFileSize
and maxRequestSize
你的极限之内application.yml
文件(通常放置在grails-app/conf/
)。确保有这样的东西:
grails:
controllers:
upload:
maxFileSize: 2000000
maxRequestSize: 2000000
Replace 2000000
与最大字节数您想要文件上传和整个请求。Grails 3 https://github.com/grails/grails-core/blob/3.0.x/grails-plugin-controllers/src/main/groovy/org/grails/plugins/web/controllers/ControllersGrailsPlugin.groovy#L73, Grails 4 https://docs.grails.org/4.0.3/guide/theWebLayer.html#_increase_upload_max_file_size, Grails 5 https://docs.grails.org/5.1.4/guide/single.html#_increase_upload_max_file_size and Grails 6 默认 https://docs.grails.org/6.0.0-M1/guide/single.html#_increase_upload_max_file_size是 128000 (~128KB)。
FAQ
1. 如何将MB转换为字节?
YOUR_MAX_SIZE_IN_MB * 1024 * 1024 = BYTES
E.g. 将 5 MB 转换为字节
5 * 1024 * 1024 = **5242880** bytes
2. 安全性
As OWASP https://www.owasp.org/index.php/Unrestricted_File_Upload says
将文件大小限制为最大值以防止拒绝服务攻击
因此,这些限制的存在是为了防止 DoS 攻击并增强应用程序的整体性能(更大的请求大小 == 服务器使用更多的内存)。
3. 正确的值是多少maxFileSize
and maxRequestSize
?
这取决于应用程序类型,但将它们保持得太高通常是个坏主意。如果您确实需要上传大文件,可能您应该开发(或使用)专用(且独立)的服务。