首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

应用Struts2控制文件上传

2012-07-20 
使用Struts2控制文件上传1.在Struts2的struts.properties文件中,有如下配置,主要用于Struts2上传文件时的

使用Struts2控制文件上传

1.在Struts2的struts.properties文件中,有如下配置,主要用于Struts2上传文件时的上传解析器

#指定使用COS的文件上传解析器

#struts.multipart.parser=cos

#指定使用Pell的文件上传解析器

#struts.multipart.parser=pell

#struts2默认使用Jakarta的Common-FileUpload的文件上传解析器

struts.multipart.parser=jakarta

需要commons-io-1.3.2.jar、commons-fileupload-1.2.1.jar

?

2.实现文件上传的Action

<form action="upload.action" method="post" enctype="multipart/form-data">

????? 文件标题:<input type="text" name="title" /><br>

????? 选择文件:<input type="file" name="upload" /><br>

????? <input value="上传" type="submit" />

</form>

Struts2框架负责解析HttpServletRequest请求中的参数,包括文件域,Struts2使用File类型来封装文件域

public class UploadAction extends ActionSupport{

????? //封装文件标题请求参数的属性

????? private String title;

????? //封装上传文件域的属性

????? private File upload;

????? //封装上传文件类型的属性

????? private String uploadContentType;

????? //封装上传文件名的属性

????? private String uploadFileName;

????? //直接在struts.xml文件中配置的属性

????? private String savePath();

????? //getter,setter方法,ServletActionContext.getRequest().getRealPath(savePath);

????? public String execute() throws Exception{

???????????? //以服务器的文件保存地址和原文件名建立上传文件输出流

???????????? FileOutputStream fos = new FileOutputStream(getSavePath() + "\" + getUploadFileName());

???????????? FileInputStream fis = new FileInputStream(getUpload());

???????????? byte[] buffer = new byte[1024];

???????????? int len = 0;

???????????? while((len = fis.read[buffer]) > 0){

??????????????????? fos.write(buffer,0,len);

???????????? }

????????????? return SUCCESS;

????? }

}

类型为File的xxx属性封装了该文件域对应的文件内容

类型为String的xxxFileName属性封装了该文件域对应的文件的文件名

类型为String的xxxContentType属性封装了该文件域对应的文件的文件类型

?

3.配置文件

struts.xml文件中

<action name="upload" + getUploadFileName());

???? FileInputStream fis = new FileInputStream(getUpload());

???? byte[] buffer = new byte[1024];

???? int len = 0;

???? while((len = fis.read[buffer]) > 0){

???????????? fos.write(buffer,0,len);

???? }

???? return SUCCESS;

}

?

5.拦截器实现文件过滤

Struts2提供了一个文件上传的拦截器,通过配置该拦截器可以更轻松地实现文件过滤。Struts2中文件上传的拦截器是fileUpload。

struts.xml文件中

<action name="upload" class="UploadAction">

?????? <!-- 配置fileUpload的拦截器 -->

?????? <interceptor-ref name="fileUpload">

?????????????? <!-- 配置允许上传的文件类型 -->

?????????????? <param name="allowedType">image/gif,image/jpeg</param>

?????????????? <!-- 配置允许上传的文件大小 -->

?????????????? <param name="maximumSize">20000</param>

?????? </interceptor-ref>

?????? <interceptor-ref name="defaultStack"/>

?????? <param name="savePath">/upload</param>

?????? <result name="input">/input.jsp</result>

?????? <result>/succ.jsp</result>

</action>

?

struts.multipart.saveDir属性

struts.multipart.maxSize属性

热点排行