2014-12-12 83 views
2

在我的Grails應用程序中,我有一個具有上傳文件參數的操作。該文件從請求檢索像這樣:允許上傳大文件(r)

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文件失敗。有什麼我需要配置,以便允許更大的文件上傳?

+0

你正在使用哪個版本的Grails&tomcat? – 2014-12-24 10:22:39

回答

0

你看過設置Tomcat的connectionUploadTimeoutdisableUploadTimeout嗎?

Documentation

connectionUploadTimeout

指定超時,以毫秒爲單位,用而數據上傳正在進行 。這隻有在disableUploadTimeout設置爲 false時纔會生效。

例子:

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

您將要根據自己的需要來調整超時值。

+0

我在生產環境中遇到問題(僅限於)。 AFAIK,上面提到的_Events.groovy文件中的任何配置僅適用於dev環境。 – 2014-12-21 00:34:47

0

你是用WS還是POST做這個? 如果用WS調整

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