BaseAction
package com.easyjob.cnhuike.actions; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import org.springframework.context.ApplicationContext; import java.io.*; import java.util.ArrayList; import java.util.List; import com.easyjob.cnhuike.util.modelConstant.LoginConstant; import com.framework.util.DateUtil; import com.opensymphony.xwork2.ActionSupport; public class BaseAction extends ActionSupport { public static final String LIST="list"; public static final String NEXT="next"; String inputAction; String nextAction; public HttpServletRequest getRequest(){ return ServletActionContext.getRequest(); } public HttpServletResponse getResponse(){ return ServletActionContext.getResponse(); } public HttpSession getSession(){ return getRequest().getSession(); } public ServletContext getServletContext(){ return ServletActionContext.getServletContext(); } public String getRealyPath(String path){ return getServletContext().getRealPath(path); } public String getInputAction() { return inputAction; } public void setInputAction(String inputAction) { this.inputAction = inputAction; } public String getNextAction() { return nextAction; } public void setNextAction(String nextAction) { this.nextAction = nextAction; } } 上传用的BaseAction package com.easyjob.cnhuike.actions; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import com.framework.util.DateUtil; public class BaseUploadFileAction extends BaseAction { public static final int BUFFER_SIZE=16*1024; // 用File数组来封装多个上传文件域对象 public File[] upload; // 用String数组来封装多个上传文件名 public String[] uploadFileName; // 用String数组来封装多个上传文件类型 public String[] uploadContentType; // 保存文件的目录路径(通过依赖注入) public String savePath=""; public BaseUploadFileAction(){ savePath="\uploadFile"; } //文件复制 public boolean copy(File src, File dst,int BUFFER_SIZE) { boolean result=false; InputStream in = null; OutputStream out = null; try { in = new BufferedInputStream(new FileInputStream(src), BUFFER_SIZE); out = new BufferedOutputStream(new FileOutputStream(dst), BUFFER_SIZE); byte[] buffer = new byte[BUFFER_SIZE]; int len = 0; while ((len = in.read(buffer)) > 0) { out.write(buffer, 0, len); } result=true; } catch (Exception e) { e.printStackTrace(); result=false; } finally { if (null != in) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } if (null != out) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } //上传文件方法 public List<String> uploadFile(String path,boolean isFullPath) throws IOException{ List<String> successFileList=new ArrayList<String>(); // 处理每个要上传的文件 for (int i = 0; i < upload.length; i++) { // 根据服务器的文件保存地址和原文件名创建目录文件全路径 String srcFilesInfo=uploadFileName[i].toString(); //取得文件的后缀 String FileExtensions=srcFilesInfo.substring(srcFilesInfo.lastIndexOf("."),srcFilesInfo.length()); String fileName=DateUtil.getNowDate(null)+"-"+DateUtil.getHour()+DateUtil.getMinute()+DateUtil.getSecond()+i+FileExtensions; String dstPath = getRealyPath(path) +"\"+fileName; File dstFile = new File(dstPath); if(copy(upload[i], dstFile,BUFFER_SIZE)){ if(isFullPath){ successFileList.add(path+fileName); }else{ successFileList.add(fileName); } } if(successFileList.size()<1){ throw new IOException(); } } return successFileList; } public List<String> uploadFile(String path) throws IOException{ return uploadFile(path,false); } //取得路径中的文件名 public List<String> getFileNames(String path){ File file=new File(getRealyPath(path)); List<String> resultList=new ArrayList<String>(); File[] files= file.listFiles(); for (File tempFile : files) { if(tempFile.isFile()){ resultList.add(tempFile.getName()); } } return resultList; } //建立文件夹 public void createFold(String path){ try{ path=getRealyPath(path); File folder = new File(path); if(!folder.exists()){ folder.mkdirs(); } }catch (Exception e) { e.printStackTrace(); } } /* *geter and seter * * */ public File[] getUpload() { return upload; } public void setUpload(File[] upload) { this.upload = upload; } public String[] getUploadFileName() { return uploadFileName; } public void setUploadFileName(String[] uploadFileName) { this.uploadFileName = uploadFileName; } public String[] getUploadContentType() { return uploadContentType; } public void setUploadContentType(String[] uploadContentType) { this.uploadContentType = uploadContentType; } public String getSavePath() { return savePath; } public void setSavePath(String savePath) { this.savePath = savePath; } public static int getBUFFER_SIZE() { return BUFFER_SIZE; } } 上传时所用到的拦截配置 <interceptors> <interceptor-stack name="albumUpload"> <interceptor-ref name="fileUpload"> <!-- 配置允许上传的文件类型,多个用","分隔 --> <param name="allowedTypes"> image/bmp,image/png,image/gif,image/jpeg,image/jpg,image/x-png, image/pjpeg </param> <!-- 配置允许上传的文件大小,单位字节 --> <param name="maximumSize">10240000</param> </interceptor-ref> <interceptor-ref name="defaultStack"/> </interceptor-stack> </interceptors> <action name="album!*"class="com.easyjob.cnhuike.actions.AlbumAction" method="{1}"> <interceptor-ref name="albumUpload"/> <result>/album/album_{1}.jsp</result> <result name="list"type="redirect-action">album!{1}List</result> <result name="error">/album/album_error.jsp</result> <result name="input">/album/album_error.jsp</result> <result name="next"type="redirect-action"> <param name="actionName">${nextAction}</param> <param name="namespace">/album</param> </result> </action>