struts2提供了非常强大的文件上传功能
小狼先写一个jsp
<form action="uploadAction_saveFile.love"
name="form1" method="post" enctype="multipart/form-data" >
上传文件名称:<input type="file" name="uploadImage">
<input type="submit" value="上传">
</form>
这个是写文件上传必须配置的
multipart/form-data
这里定义上传文件的文本框名称为uploadImage
在action里面接收的时候可以这么写
private File uploadImage;
private String uploadImageFileName;
private String uploadImageContentType;
标注红色的部位是不能更改的
当然,写上get/set方法
鉴于request.realPath()已经过时,所以我们采用
<span style="font-size:18px;color:#FFCC33;">ServletContext sc=ServletActionContext.getServletContext();
String filePath=sc.getRealPath("/fileUpload");</span>
在action的方法里,我们这么写
public String saveFile(){
Log.getLog().info("UploadAction ***************** saveFile()");
ServletContext sc=ServletActionContext.getServletContext();
String filePath=sc.getRealPath("/fileUpload");
File file=new File(filePath,uploadImageFileName);
try {
FileUtils.copyFile(uploadImage, file);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
uploadImage.delete();
return SUCCESS;
}
}
注:FileUtils这个工具类非常的强大
当然,上传文件是有大小限制的
在struts.xml中如下配置: <constant name="struts.multipart.maxSize" value="209715200"></constant>
这里是配置的总文件的大小
在action里面这么配置:
<package name="upload" namespace="/upload" extends="struts-default">
<action name="uploadAction_*" class="zcy.test.upload.UploadAction" method="{1}">
<result name="success">success.jsp</result>
<result name="input">error.jsp</result>
<interceptor-ref name="defaultStack">
<!--这里的三个参数是固定的-->
<param name="fileUpload.maximumSize">20971520</param>
<param name="fileUpload.allowedTypes">image/jpeg</param>
<param name="fileUpload.allowedExtensions">.jpg</param>
</interceptor-ref>
</action>
</package>
这么着就ok了