2012-10-02 47 views
4

我想使用struts2fileUpload這個行爲很奇怪的文件上傳機制來開發一個web應用程序,我找不到原因。如何使用支持大文件的struts 2獲取文件上傳?

我配置在struts.xml中的文件上傳機制:

<package name="com.actions" namespace="/" extends="struts-default"> 
<action name="excelupload" class="com.actions.FileuploadAction"> 
    <interceptor-ref name="fileUpload"> 
      <param name="maximumSize">10000000</param> 
    </interceptor-ref> 
     <result name="success">/fileupload.jsp</result> 
     <result name="input">/fileupload.jsp</result> 

    </action> 
</package> 

相應JSP:

<s:form action="excelupload" method="post" enctype="multipart/form-data"> 
    <s:file name="excelfile" label="file" /> 
    <s:submit name="upload" value="upload" align="center" /> 
</s:form> 

相應的動作:

public class FileuploadAction extends ActionSupport{ 
    File excelfile; 
    public File getExcelfile() { 
    return excelfile; 
} 

public void setExcelfile(File excelfile) { 
    this.excelfile = excelfile; 
} 
    public String execute(){ 
     System.out.println(excelfile.getName()); 
     return SUCCESS; 
    } 
} 

當我上傳一個小文件一切正常。但是,當我嘗試上傳的文件大於2 MB的應用程序會引發以下異常:

org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request 
was rejected because its size (3244109) exceeds the configured maximum (2097152) 

要解決這個問題,我打算給struts-default.properties

struts.multipart.maxSize=20097152 

增加的根我的應用程序的類路徑。

修正了例外,但現在excelfile始終是null,無論文件有多大。

有人知道我在做什麼錯嗎?

編輯:對於我的部署使用Tomcat 編輯:新增失蹤getter和setter方法。

+1

檢查您正在使用的服務器的最大文件上傳大小限制。 – Jimmy

+0

我已經在struts.xml中用試過了這個問題 – ashiaka

+1

你有'File excelFile'的getter和setter嗎? – nmc

回答

0

我可以從struts.xml去除

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

解決這個問題。