实验步骤:
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