struts2的文件上传
实验步骤:
1.创建一个web项目
2.导入struts2常用的类包,下载地址:http://download.csdn.net/detail/yy228313/7108273
3.创建UploadAction动作类,保存包名为com.ye.sise.action
动作类中创建4个变量:
private File upload;//封装上传文件内容 private String uploadFileName;//封装上传文件名 private String uploadContenType;//封装上传文件的类型 private String savePath;//保存路径
setSavePath方法:
public String getSavePath() { //返回请求参数中savePath保存的值,sp:在struts.xml中配置 return ServletActionContext.getRequest().getRealPath(savePath); }
execute方法:
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
<s:form action="upload" enctype="multipart/form-date"> <s:file name="upload" label="请选择上传的文件"/> <s:submit value="上传"/> </s:form>
5.在指定的位置创建用于保存上传文件的文件夹upload
6.在配置文件struts.xml中定义动作包和动作
核心代码:
<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