struts 多文件上传

    技术2022-05-11  66

    最近在做Struts项目时遇到了上传多个文件的问题。在网上查了不少资料,也没有找到用Struts上传多个文件的例子。我经过几天的研究,实现了用Struts上传多个文件的功能。现在贴出来让大家共享!       一。建立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;      /**      * <p>      * Title:UpLoadForm      * </p>      * <p>      * Copyright: Copyright (c) 2005 techyang http://blog.csdn.net/techyang      * </p>      * @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;      /**      * <p>      * Title:UpLoadAction      * </p>      * <p>      * Copyright: Copyright (c) 2005 techyang http://blog.csdn.net/techyang      * </p>      * @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:/Tomcat5/webapps/coka/ 其中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:/Tomcat5/webapps/coka/UploadFiles/DSC01508.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");      }      }       三。建立上传用的JSP文件 upload.jsp      <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>      <html:html>      <head>      <title>用Struts上传文件</title>      </head>      <body>      <html:form action="/uploadsAction" enctype="multipart/form-data">      <html:file property="theFile"/>      <html:file property="theFile2"/>      <html:submit/>      </html:form>      </body>      </html:html>       四。配置struts-config.xml文件      <?xml version="1.0" encoding="UTF-8"?>      <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">      <struts-config>      <data-sources />      <form-beans >      <form-bean name="uploadsForm" type="com.cnehu.struts.form.UpLoadForm" />      </form-beans>      <global-exceptions />      <global-forwards >      </global-forwards>      <action-mappings >      <action name="uploadsForm" type="com.cnehu.struts.action.UpLoadAction" path="/uploadsAction">      <forward name="display" path="/display.jsp" />      </action>      </action-mappings>      </struts-config> http://www.javabc.com/ <script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

    最新回复(0)