struts2 实现文件上传
第一步:在WEB-INF/lib下加入commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar。这两个文件可以从http://commons.apache.org/下载。
第二步:把form表的enctype设置为:“multipart/form-data“,如下:
<form enctype="multipart/form-data" action="${pageContext.request.contextPath}/xxx.action" method="post">
<input type="file" name="uploadImage">
</form>
第三步:在Action类中添加以下属性,属性红色部分对应于表单中文件字段的名称,下面的都是固定写法:
public class HelloWorldAction{
private File uploadImage;//得到上传的文件
private String uploadImageContentType;//得到文件的类型
private String uploadImageFileName;//得到文件的名称
//这里略省了属性的getter/setter方法
public String upload() throws Exception{
String realpath = ServletActionContext.getServletContext().getRealPath("/images");//保存图片的绝对路径
File file = new File(realpath);
if(!file.exists()) file.mkdirs();//如果目录不存在,则创建
FileUtils.copyFile(uploadImage, new File(file, uploadImageFileName));
return "success";
}
}
第四步:配置struts.xml
<struts> <constant name="struts.multipart.maxSize" value="398354109"></constant> <package name="upload" extends="struts-default" namespace="/test"> <action name="upload" class="com.camelot.action.Upload"> <result>/index.jsp</result> </action> <action name="delete" class="com.camelot.action.DeleteAction"> <result>/index.jsp</result> </action> <action name="download" class="com.camelot.action.DownloadAction"> <result type="stream"> <param name="contentDisposition">attachment;filename="a.txt"</param> <param name="inputName">txtFile</param> </result> </action> </package> </struts>
并限制上传文件的大小