天天看点

【Struts2框架】第八节上传-利用struts2实现上传功能

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