我想使用 struts2
和 fileUpload
开发一个带有文件上传机制的网络应用程序,它的行为很奇怪,我不知道为什么。
我在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>
对应的Action:
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 方法。
最佳答案
我可以通过删除来解决这个问题
<interceptor-ref name="fileUpload">
<param name="maximumSize">10000000</param>
</interceptor-ref>
来自struts.xml
。
关于java - 我怎样才能使用 struts 2 为大文件上传文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12691941/