grails中内存上传文件大小的变化

Posted

技术标签:

【中文标题】grails中内存上传文件大小的变化【英文标题】:Change in memory upload file size in grails 【发布时间】:2015-10-26 15:12:56 【问题描述】:

我想增加文件大小,将其上传到 grails 应用程序时会保留在内存中(这意味着它不会写入硬盘)。我已经阅读了一些定义 multipartResolver bean 并设置 maxInMemorySize 属性的建议:

multipartResolver(org.springframework.web.multipart.commons.CommonsMultipartResolver) 
    maxInMemorySize=10240  
 

但是我发现 grails 已经定义了这个 bean,所以我的定义将覆盖 grails 定义的所有其他设置。这真的是个好方法吗?

【问题讨论】:

【参考方案1】:

您是正确的,您可能正在删除 Grails 所做的某些配置,即使您复制整个原始 bean 定义并进行更改,Grails 定义将来也可能会更改,您也会阻止这种情况发生。

在这种情况下,您似乎可以随时更改此属性; Spring bean 中的 setter 将值设置在 DiskFileItemFactory 的私有实例上,looking at its source 看起来这是一个安全的更改。

所以我会在 BootStrap 中为 bean 添加依赖注入并在那里进行更改,例如

class BootStrap 

   def multipartResolver

   def init = 
      multipartResolver.maxInMemorySize = 10240
   

【讨论】:

感谢您的回复,您愿意在引导程序中设置值而不是 BeanPostProcessor 吗? 当然。 BeanPostProcessor(以及类似的类型,如 BeanFactoryPostProcessor 等)非常强大,可以让您在 bean 构建期间访问大量信息,但对于这样的事情来说太过分了。

以上是关于grails中内存上传文件大小的变化的主要内容,如果未能解决你的问题,请参考以下文章

Grails 文件上传 - 如何识别文件和/或内容类型?

大型文件上传期间的 Grails 连接超时

grail中的多个文件上传

Grails文件上传:视图渲染时如何设置输入文件的值

Grails 文件上传问题

Grails3文件上传maxFileSize限制