实验步骤:
1.创建一个web项目
2.导入struts2常用的类包,下载地址:http://download.csdn.net/detail/yy228313/7108273
3.创建UploadAction动作类,保存包名为com.ye.sise.action
动作类中创建4个变量:
|
1
2
3
4 |
private
File upload;//封装上传文件内容private
String uploadFileName;//封装上传文件名private
String uploadContenType;//封装上传文件的类型private
String savePath;//保存路径 |
setSavePath方法:
|
1
2
3
4 |
public String getSavePath() { //返回请求参数中savePath保存的值,sp:在struts.xml中配置 return
ServletActionContext.getRequest().getRealPath(savePath);} |
execute方法:
|
1
2
3
4
5
6
7
8
9
10
11
12 |
public String execute() throws
Exception{ String filePath=getSavePath()+"\\"+getUploadFileName(); InputStream is=new
FileInputStream(getUpload());//创建上传文件的输入流 OutputStream os=new
FileOutputStream(filePath);//根据新路径创建输出流 byte
buffer[]=new
byte[1024]; int
len=0; while((len=is.read(buffer))>0) os.write(buffer,0,len); is.close(); os.close(); return
SUCCESS;} |
4.创建两个JSP页面,upload.jsp/uploadResult.jsp,分别用于上传和显示参数,保存目录:webRoot
|
1
2
3
4 |
<s:form action="upload"
enctype="multipart/form-date"><s:file name="upload"
label="请选择上传的文件"/><s:submit value="上传"/></s:form> |
5.在指定的位置创建用于保存上传文件的文件夹upload
6.在配置文件struts.xml中定义动作包和动作
核心代码:
|
1
2
3
4
5
6
7
8
9
10 |
<action name="upload"
class="com.sise.ye.action.UploadAction"> <param name="savePath">/upload</param> <result name="success">uploadResult.jsp</result> <result name="input">upload.jsp</result> <interceptor-ref name="fileUpload"> <param name="allowedType">text/plain</param> <param name="maximumSize">20999</param> </interceptor-ref> <interceptor-ref name="defaultStack"/> </action> |
代码解析:allowedTypes是设置允许上传文件的类型了,maximumSize是设置文件允许的最大限度。
代码下载路径:http://download.csdn.net/detail/yy228313/7115181
原文:http://www.cnblogs.com/yexiaodong/p/3628855.html