struts2的文件上传
将表单的method属性设置为post,将enctype设置为multipart/form-data。
将enctype设置为multippart/form-data,浏览器将采用二进制流方式处理表单数据。
struts2的文件上传默认使用jakarta的commons-fileupload文件上传框架,
依赖commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar
①.# struts.multipart.parser=cos
②.# struts.multipart.parser=pell
③.struts.multipart.parser=jakarta
实现文件上传的action
需求:输入标题,浏览文件,上传
若表单中文件域的name属性为xxx,则action需要三个属性来封装该文件域信息
①.类型为file的xxx属性封装了该文件域对应的文件内容
②.类型为string的xxxfilename属性封装了该文件域对应的文件名
③.类型为string的xxxcontenttype属性封装了该文件域对应的文件类型
编写处理上传请求的action类
①.private string title;
②.private file upload;
③.private string uploadcontenttype;
④.private string uploadfilename;
⑤.private string savepath;
action属性的值可以通过struts2配置文件注入,即在配置文件中为属性指定值
①.servletactionconext.getservletcontext().getrealpath(savepath);
execute: fileutils.copy(uploadimage,new file(folder,uploadimagefilename));
配置文件上传的action
为action指定<param name="savapath">/images</param>
<img src="<s:property value="'images/'+ uploadfilename"/>"/>
用java.util.uuid工具类生产唯一的文件名
上传实例:
struts.xml:
uploadaction.java:
upload.jsp:
succ.jsp:
上述代码实现了一个基本的上传功能
注意:
在struts.xml中配置action,然后注入初始值param,,里面有允许上传的类型。
在action类中,用get、set方法得到允许上传的类型(一般是个字符串数组),之后与上传文件的类型比较,如果有一样的,放行,如果没有,说明上传类型非法,将错误信息放在fielderror里面,类似:addfielderror("upload","上传的类型不正确!");。在jsp文件里以<s:fielderror/>显示错误提示
转载请注明出处:http://blog.csdn.net/acmman/article/details/47251619