Struts的多個檔案上傳
阿新 • • 發佈:2018-11-19
public class UploadsAction extends BaseAction{ private File[] file; private String[] fileFileName; private String[] fileContentType; private String serverDir = "/Upload"; public File[] getFile() { return file; } public void setFile(File[] file) { this.file = file; } public String[] getFileFileName() { return fileFileName; } public void setFileFileName(String[] fileFileName) { this.fileFileName = fileFileName; } public String[] getFileContentType() { return fileContentType; } public void setFileContentType(String[] fileContentType) { this.fileContentType = fileContentType; } /** * 獲取資料夾的真實路徑 * * @param Path * @return */ private String getRealPath(String Path) { return this.request.getServletContext().getRealPath(Path); } /** * 上傳 * * @return */ public String upload() throws IOException { for (int i = 0; i < file.length; i++) { System.out.println("名字" + fileFileName[i]); System.out.println("型別" + fileContentType[i]); //真實路徑 ,檔名前面加上uuid是因為可能會因為檔名相同而覆蓋 String realPath = getRealPath(serverDir + "/" + UUID.randomUUID().toString() +fileFileName[i]); System.out.println(realPath); //複製 FileUtils.copyFile(file[i], new File(realPath)); } return "Interceptor"; } }
BaseAction
package com.hw.one.web; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.ServletResponseAware; /** * 每一個開發的子控制器要用的屬性都定義在通用的action中。 * @author Administrator * */ public class BaseAction implements ServletRequestAware, ServletResponseAware{ /** * 為了傳值使用 */ protected HttpServletResponse response; protected HttpServletRequest request; protected HttpSession session; protected ServletContext application; /** * 為了配置跳轉頁面所用 */ protected final static String SUCCESS = "success"; protected final static String FAIL = "fail"; protected final static String LIST = "list"; protected final static String ADD = "add"; protected final static String EDIT = "edit"; protected final static String DETAIL = "detail"; /** * 具體傳值欄位 後端向jsp頁面傳值所用欄位 */ protected Object result; protected Object msg; protected int code; public Object getResult() { return result; } public Object getMsg() { return msg; } public int getCode() { return code; } @Override public void setServletResponse(HttpServletResponse arg0) { this.response = arg0; } @Override public void setServletRequest(HttpServletRequest arg0) { this.request = arg0; this.session = arg0.getSession(); this.application = arg0.getServletContext(); } }
單個檔案上傳見上篇部落格