2013-06-04 64 views
1

如果我嘗試上傳超過2 MB大小的文件,則會出錯。Struts 2約定插件 - 上傳超過2 MB的文件

我在apache網站上發現說「有兩個單獨的文件大小限制,首先是來自Struts 2 default.properties文件的struts.multipart.maxSize。這個設置是爲了禁止惡意用戶上傳非常大的文件來記錄你的服務器磁盤空間,這個設置默認爲大約2兆字節,應該調整到最大文件大小(最多2個),你需要框架來接收「

所以我發現這個問題可以通過在struts.xml文件中添加具有期望的最大限制<constant name="struts.multipart.maxSize" value="1000000" />的標籤來解決。

我們使用的是struts2-convention-plugin,所以我們沒有struts.xml。所以,我不知道在哪裏定義這個最大文件大小......

請讓我知道,如果你的任何一個所遇到的這個..

欣賞你的幫助。

回答

1
  1. 可以在struts.xml中定義一個最大尺寸(multipart.maxSize,像你說的)限制爲每個多部分請求傳輸整體;

  2. 您還可以定義文件大小爲的FileUpload攔截(默認爲2MB),無論是在全球一個包,併爲一個單一的動作(由配置該參數爲攔截在<action>標籤struts.xml中,或使用公約插件時註解它的行動中:

    <interceptor-ref name="fileUpload"> 
        <param name="maximumSize">10485760</param> 
    </interceptor-ref> 
    

這意味着,例如,如果您配置20MB的整體多部分大小,每個文件的最大大小爲4MB,則可以在單個請求中執行5個4MB文件的多次上傳;

此處瞭解詳情:https://stackoverflow.com/a/15968166/1654265


這就是說,你的問題是一個非問題;

使用公約插件並不意味着你沒有支柱。xml;這意味着

  • 可以在操作使用註解
  • 可能避免使用struts.xml的;
  • 當一些Struts配置不如行動有關,如multipart.maxSize,全球映射(結果,異常,自定義攔截器棧等)是必要的,你絕對能使用struts.xml的(創建它,如果直到那一刻纔出現)。

無處在Convention Plugin Documentation,被提及的是相互排斥的struts.xml中(相反,如果你嘗試在網頁「的struts.xml」上搜索,你會發現幾個發生)

1

您必須更改您的apache目錄中conf文件夾下的server.xml文件。找到您正在使用的connector標籤,並添加你maxPostSize想要的東西,以字節爲單位:

<Connector port="8080" protocol="HTTP/1.1" 
      connectionTimeout="20000" 
      redirectPort="8443" 
      maxPostSize="2097152" />