Greedy的工作室

posts - 23,comments - 7,trackbacks - 0
一.建立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;

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;

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();//把文件读入
             
               /*
                * 建立一个上传文件的输出流 如果是linux系统请把UploadFiles后的"\\"换成"/"
                */
               OutputStream bos = new FileOutputStream(filePath + "UploadFiles\\"+file.getFileName());
               
               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();//把文件读入
               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>
posted on 2008-06-27 10:53 greedy 阅读(131) 评论(0)  编辑  收藏 所属分类: Struts

只有注册用户登录后才能发表评论。


网站导航: