用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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值