Struts2 文件上传基于 Struts2 拦截器实现;
Struts2 文件上传使用的是 fileupload 组件;
Form 配置 enctype="multipart/form-data";
Struts2 获取上传文件:name (name 是文件表单的 name) Struts2 获取上传文件名:name+FileName;
Struts2 获取上传文件的类型:name+ContentType;
文件上传
fileUpload.jsp:
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file1"/>
<input type="submit" value="上传"/>
</form>
struts.xml:
<struts>
<package name="hello" extends="struts-default" >
<action name="upload" class="com.java.action.FileUploadAction">
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
FileUploadAction:
public File getFile1() {
return file1;
}
public void setFile1(File file1) {
this.file1 = file1;
}
public String getFile1FileName() {
return File1FileName;
}
public void setFile1FileName(String File1FileName) {
this.File1FileName = File1FileName;
}
public String getFile1ContentType() {
return file1ContentType;
}
public void setFile1ContentType(String file1ContentType) {
this.file1ContentType = file1ContentType;
}
private File file1;//文件
private String File1FileName;//文件名
private String file1ContentType;//文件类型
@Override
public String execute() throws Exception {
System.out.println("文件名:"+File1FileName);
System.out.println("文件类型:"+file1ContentType);
String filePath = "c:/upload/"+File1FileName;
File saveFile = new File(filePath);
FileUtils.copyFile(file1, saveFile);
return SUCCESS;
}
测试:
配置文件的大小及类型
<paramname="allowedTypes">image/bmp,image/x-png,image/gif,image/jpg,image/jpeg</param> <paramname="maximumSize">81101</param>
<s:fielderror></s:fielderror>
通过重写拦截器:fileUpload
<paramname="allowedTypes">image/bmp,image/x-png,image/gif,image/jpg,image/jpeg</param> <paramname="maximumSize">81101</param>
重写了,要把默认的加上。
如果被拦截,底层会返回input,
用<s:fielderror></s:fielderror>打印错误信息。
<struts>
<package name="hello" extends="struts-default" >
<action name="upload" class="com.java.action.FileUploadAction">
<result name="success">/success.jsp</result>
<result name="input">/fileUpload.jsp</result>
<interceptor-ref name="fileUpload">
<param name="allowedTypes">text/plain</param>
<param name="maximumSize">2048</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>
</struts>
大文件上传
Struts2 文件上传大小默认是 2M;
大文件上传,添加以下这个属性:
<constantname="struts.multipart.maxSize"value="最大容量,单位k"></constant>
<struts>
<constant name="struts.multipart.maxSize" value="1024000"></constant>
<package name="hello" extends="struts-default" >
<action name="upload" class="com.java.action.FileUploadAction">
<result name="success">/success.jsp</result>
<result name="input">/fileUpload.jsp</result>
<interceptor-ref name="fileUpload">
<param name="allowedTypes">text/plain</param>
<param name="maximumSize">2048</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>
</struts>