struts2文件上传

Posted 关键步就几步

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了struts2文件上传相关的知识,希望对你有一定的参考价值。

文件上传说白了就是利用form表单request域中上传数据,后台到Action中解析request域进行文件获取和文件类型以及后缀解析,过程比较繁琐,不过这些公共的繁琐步骤是struts框架已经为我们做好了,只需要按照其规则进行页面绘制和后台属性注入即可

1、form表单必须为method="post" enctype="multipart/form-data",得有file标签

<input type="file" name="upload" />

2、action中定义拦截器规定名字的属性,File类型的属性用于接收上传的文件内容,文件名得和form表单中的file类型标签的name一致,后面两个属性是struts拦截器用的用于存放文件名和文件类型的,省得自己再去解析了,要求就是前部分和form表单的name一致,后半部分以FileName结尾或以ContentType结尾

3、在相应Action的方法中就可以直接获取文件内容和后缀以及文件名进行保存使用,如

  

		if(uploadFileName != null){
			// 打印
			System.out.println("文件类型:"+uploadContentType);
			// 把文件的名称处理一下
			String uuidname = UploadUtils.getUUIDName(uploadFileName);
			// 把文件上传到D:\\\\apache-tomcat-7.0.52\\\\webapps\\\\upload
			String path = "D:\\\\apache-tomcat-7.0.52\\\\webapps\\\\upload\\\\";
			// 创建file对象
			File file = new File(path+uuidname);
			// 简单方式
			FileUtils.copyFile(upload, file);	
			//import org.apache.commons.io.FileUtils;工具类 		
			xxxService.save(pojo);   //同时记得把文件保存到图床的位置还得保存到对应实体的img字段中,不然回显不了图片
		}

4、默认struts图片上传会有大小限制,默认为2M,如果想上传更大点,可以自己配置常量

5、上传类型限制,需要自己在fileupload拦截器中注入属性值,如果使用的是默认拦截器栈struts-default,那么在Action的配置文件中,把默认拦截器栈引入过来,指定要修改默认拦截器栈中哪一个拦截器,具体如下,此例为简单配置,如果很多action使用了图片上传,那么最好配置成功通用的拦截器栈来继承:

 

以上是关于struts2文件上传的主要内容,如果未能解决你的问题,请参考以下文章

Struts2学习—文件上传和下载

struts2实现文件上传下载

jquery+struts2 上传文件

struts2上传文件

struts2学习笔记--上传单个和批量文件示例

文件上传(多文件上传)/下载