允许上传大(r)文件

时间:2014-12-12 23:59:46

标签: grails

在我的Grails应用程序中,我有一个具有上传文件参数的操作。从请求中检索文件,如下所示:

CommonsMultipartFile cu = params['currencyResult']

如果文件大小很小,它可以正常工作,但如果我尝试上传1.3MB文件,则会发生“连接已重置”错误(执行永远不会到达操作)。

我尝试进行以下更改,以允许上传最大100MB的文件。在resources.groovy中,我添加了以下Spring bean

multipartResolver(CommonsMultipartResolver) {
    maxUploadSize = 1000000 * 100 // 100 MB
}

在Tomcat的server.xml中,我将此maxPostSize属性添加到Connector

<Connector port="80" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="443"  maxPostSize="100000000"/>

但是仍然无法上传1.3MB的文件。是否还需要配置其他内容才能上传更大的文件?

2 个答案:

答案 0 :(得分:0)

您是否考虑过设置Tomcat&{39} connectionUploadTimeoutdisableUploadTimeout

来自Documentation

  

<强> connectionUploadTimeout

     

指定数据上载时使用的超时(以毫秒为单位)   进行中。这仅在disableUploadTimeout设置为时生效   假的。

示例:

<Connector port="80" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="443"  
           maxPostSize="100000000"
           disableUploadTimeout="false"
           connectionUploadTimeout="300000" />

或者在开发过程中,您可以使用以下内容在Grails中进行设置:

eventConfigureTomcat = { tomcat ->
    tomcat.connector.setAttribute('disableUploadTimeout', false);
    tomcat.connector.setAttribute('connectionUploadTimeout', 300000);
}

您需要根据需要调整超时值。

答案 1 :(得分:0)

您是通过WS还是POST执行此操作? 如果用WS调整

<scripting>
  <webServices>
    <jsonSerialization maxJsonLength="500000000"/>
  </webServices>
 </scripting>