技术开发 频道

用Struts上传多个文件的方法


IT168技术文档】 
    建立ActionForm
package com.cnehu.struts.form; import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionError; import org.apache.struts.action.ActionErrors; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionMapping; import org.apache.struts.upload.FormFile; import org.apache.struts.upload.MultipartRequestHandler; /** * * Title:UpLoadForm * * * Copyright: Copyright (c) 2005 techyang ;http://blog.csdn.net/techyang * * @author techyang * @version 1.0 */ public class UpLoadForm extends ActionForm { public static final String ERROR_PROPERTY_MAX_LENGTH_EXCEEDED =
"org.apache.struts.webapp.upload.MaxLengthExceeded"; protected FormFile theFile; protected FormFile theFile2; public FormFile getTheFile() { return theFile; } public void setTheFile(FormFile theFile) { this.theFile = theFile; } public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) { ActionErrors errors = null; //has the maximum length been exceeded? Boolean maxLengthExceeded = (Boolean) request .getAttribute(MultipartRequestHandler.ATTRIBUTE_MAX_LENGTH_EXCEEDED); if ((maxLengthExceeded != null) && (maxLengthExceeded.booleanValue())) { errors = new ActionErrors(); errors.add(ERROR_PROPERTY_MAX_LENGTH_EXCEEDED, new ActionError( "maxLengthExceeded")); } return errors; } /** * @return Returns the theFile2. */ public FormFile getTheFile2() { return theFile2; } /** * @param theFile2 The theFile2 to set. */ public void setTheFile2(FormFile theFile2) { this.theFile2 = theFile2; } }
    建立ActionServlet
package com.cnehu.struts.action; import java.io.*; import javax.servlet.http.*; import org.apache.struts.action.*; import org.apache.struts.upload.FormFile; import com.cnehu.struts.form.UpLoadForm; /** * * Title:UpLoadAction * * Copyright: Copyright (c) 2005 techyang ;http://blog.csdn.net/techyang * * @author techyang * @version 1.0 */ public class UpLoadAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { String encoding = request.getCharacterEncoding(); if ((encoding != null) && (encoding.equalsIgnoreCase("utf-8"))) { response.setContentType("text/html; charset=gb2312");
//如果没有指定编码,编码格式为gb2312 }
UpLoadForm theForm = (UpLoadForm) form; FormFile file = theForm.getTheFile();//取得上传的文件 FormFile file2=theForm.getTheFile2(); try { /* * 取当前系统路径D:Tomcat5webappscoka 其中coka 为当前context */ String filePath = this.getServlet().getServletContext() .getRealPath("/"); InputStream stream = file.getInputStream();//把文件读入 ByteArrayOutputStream baos = new ByteArrayOutputStream(); /* * 建立一个上传文件的输出流 如果是linux系统请把UploadFiles后的"\"换成"/" */ OutputStream bos = new FileOutputStream(filePath + "UploadFiles\"+file.getFileName()); //D:Tomcat5webappscokaUploadFilesDSC01508.JPG /* System.out.println(filePath + "UploadFiles\"+file.getFileName()); System.out.println(filePath);*/ request.setAttribute("fileName",filePath + "/" + file.getFileName()); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) { bos.write(buffer, 0, bytesRead);//将文件写入服务器 } bos.close(); stream.close(); InputStream stream2 = file2.getInputStream();//把文件读入 ByteArrayOutputStream baos2 = new ByteArrayOutputStream(); OutputStream bos2 = new FileOutputStream(filePath + "UploadFiles\"+file2.getFileName());//建立一个上传文件的输出流 int bytesRead2 = 0; byte[] buffer2 = new byte[8192]; int i=0; while ((bytesRead2 = stream2.read(buffer2, 0, 8192)) != -1) { bos2.write(buffer2, 0, bytesRead2);//将文件写入服务器 } bos2.close(); stream2.close(); } catch (Exception e) { System.err.print(e); } return mapping.findForward("display"); }
}
0
相关文章