Struts2文件上传

主要思想:浏览器à过滤器à拦截器àActionàResultàjsp的过程。

 

重要核心:1,表单提交时,enctype=”multipart/form-data”

                2,struts.xml文件的配置。

                3,Action文件中,设置三个变量记录上传文件信息,分别为File (变量名为表单中file的name属性值)、String类型的FileName(变量名为表单的name属性值+FileName)文件名、String类型的ContentType(变量名为表单的name属性值+ContentType)。

                4,在Action的方法中使用FileUtils工具类完成上传,使用copyFile方法,两个参数都是File,分别为上传的源文件,由File属性接收;新建的文件,以指定的文件名保存到指定的目录。

                5,在struts.xml中设置默认拦截器栈,可以设置最大文件大小,以及限制上传的文件类型。

 

步骤:

1, 导入需要的jar包,配置StrutsPrepareAndExecuteFilter过滤器。

2, 写一个jsp,即文件上传的表单,

<form action="${pageContext.request.contextPath }/uploadAction_upload" method="post" enctype="multipart/form-data">
  		<input type="file" name="image" />
  		<input type="submit" value="提交" />
  	</form>

3,写struts.xml配置文件,根据提交的路径进行配置,

<struts>
	<constant name="struts.devMode" value="true" />	//配置成开发模式
	<package name="day25" namespace="/" extends="struts-default">	
		<action name="uploadAction_*" class="cn.itcast.action.UploadAction" method="{1}">
			<result name="success">/success.jsp</result>	//上传成功的处理页面
			
			<result name="input">/error.jsp</result> 		//上传失败的处理页面
			
		</action>
	</package>
</struts>

4,  编写Action,名为UploadAction,定义三个字段值,并提供getter、setter方法,分别为File (变量名为表单中file的name属性值)、String类型的FileName(变量名为表单的name属性值+FileName)文件名、String类型的ContentType(变量名为表单的name属性值+ContentType)。在主方法upload中,获取上传的目标路径,并建立制定名称的文件,并通过FileUtils的copyFile(File srcFile,FiledestFile)将上传的源文件上传到指定的位置。

	private File image;
	private String imageContentType;
	private String imageFileName;
	 
	//省略了getter和setter方法。。。
	public String upload() {
		ServletContext servletContext = ServletActionContext.getServletContext();
		String realpath = servletContext.getRealPath("/upload");
		try {
			File file = new File(realpath,imageFileName);
			FileUtils.copyFile(image, file);
		} catch (IOException e) {
			throw new RuntimeException(e.getMessage(),e);
		}
		
		return SUCCESS;
	}

5,在struts.xml文件中引用默认的拦截器,对Action进行拦截。

<struts>
	<constant name="struts.devMode" value="true" />
	<constant name="struts.multipart.maxSize" value="86170804"/>
	<package name="day25" namespace="/" extends="struts-default">
		<action name="uploadAction_*" class="cn.itcast.action.UploadAction" method="{1}">
			<result name="success">/success.jsp</result>
			
			<result name="input">/error.jsp</result>	//返回input时跳转的jsp页面
			
			<interceptor-ref name="defaultStack">		//引用默认的拦截器栈
				<param name="fileUpload.maximumSize">10000000</param>	//设置最大文件大小
				<param name="fileUpload.allowedExtensions">.txt,.jpg,.doc</param>//对上传文件的类型进行限定
			</interceptor-ref>
		</action>
	</package>
	<!-- 配置上传文件的出错信息的资源文件 -->
    <constant name="struts.custom.i18n.resources" value="fileuploadmessage"/>
</struts>

6,开启tomcat服务器测试。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值