Chinaunix首页 | 论坛 | 博客
  • 博客访问: 446083
  • 博文数量: 750
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 4970
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-09 12:36
文章分类

全部博文(750)

文章存档

2011年(1)

2008年(749)

我的朋友
最近访客

分类:

2008-09-09 15:24:42


  最近在做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;
  
  /**
  
  *


  
  * 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:\Tomcat5\webapps\coka\ 其中coka 为当前context
  
  */
  
  String filePath = this.getServlet().getServletContext()
  
  .getRealPath("/");
  
  InputStream stream = file.getInputStream();//把文件读入
  
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  
  /*
  
  * 建立一个上传文件的输出流 如果是系统请把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="" prefix="html" %>
  
  
  
  
  
  用Struts上传文件
  
  
  
  
  
  
  
  
  
  
  
  
  
  

  
  
  
  

  
  四。配置struts-config.xml文件
  
  
  
  
  
  
  
  
  
  
  
  
  
  

  
  
  
  
  
  

  
  
  
  
  
  
  
  

  
  

  
  
【责编:admin】

--------------------next---------------------

阅读(206) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~