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>

 

 

并限制上传文件的大小

 

posted @ 2012-10-20 13:15  小木v587  阅读(174)  评论(0编辑  收藏  举报