struts上传文件的方法

     

用到的类import org.apache.struts.upload.FormFile;

Jsp上传页面:

<%@ page contentType="text/html; charset=GBK" %>

<html>

<head>

<title>

strutsUploadForm

</title>

</head>

<body bgcolor="#ffffff">

<h1>
上传测试
</h1>

<form action="uploadTestAction.do" method="post" enctype="multipart/form-data" name="form1">
 <p>文本
    <input name="theText" type="text" id="theText">
</p>
  <p>文件
   <input name="theFile" type="file" id="theFile">
</p>
<p>保存到
    <input name="saveTo" type="text" id="saveTo">
</p>
  <p>
    <input type="submit" name="Submit" value="提交">
</p>
</form>
</body>
</html>

actionForm

package hehe;

import org.apache.struts.action.*;

import javax.servlet.http.*;

import org.apache.struts.upload.FormFile;

public class UploadTestForm extends ActionForm {

  private String saveTo;

  private String theText;

  private org.apache.struts.upload.FormFile theFile;//文件框对应的是formFile类型

  public String getSaveTo() {

    return saveTo;

  }

  public void setSaveTo(String saveTo) {

    this.saveTo = saveTo;

  }

  public org.apache.struts.upload.FormFile getTheFile() {

    return theFile;

  }

  public void setTheFile(org.apache.struts.upload.FormFile theFile) {

    this.theFile = theFile;

  }

  public String getTheText() {

    return theText;

  }

  public void setTheText(String theText) {

    this.theText = theText;

  }

  public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {

    /**@todo: finish this method, this is just the skeleton.*/

    if(!this.getTheFile().getContentType().equals("image/pjpeg")){

      System.out.println("不是jpg");

    }//可以判断类型

    if(this.getTheFile().getFileSize()>100){

      System.out.println("长度大于1000");

    }//可以判断大小

    return null;

  }

  public void reset(ActionMapping actionMapping, HttpServletRequest httpServletRequest) {

    saveTo = null;

    theFile = null;

    theText = null;

  }

}

Action

package hehe;

import org.apache.struts.action.*;

import org.apache.struts.upload.FormFile;

import javax.servlet.http.*;

import java.io.*;

public class UploadTestAction

    extends Action {

  public ActionForward execute(ActionMapping actionMapping,

                               ActionForm actionForm,

                               HttpServletRequest request,

                               HttpServletResponse response) {

    UploadTestForm uploadForm = (UploadTestForm) actionForm;

    FormFile file = uploadForm.getTheFile();

    String path = uploadForm.getSaveTo();

    String theText = uploadForm.getTheText();

    try {

      InputStream input = file.getInputStream();//能从FormFile中获得输入流

      OutputStream output = new FileOutputStream(path);

      int bytesReader = 0;

      byte[] readbuffer = new byte[8192];

      while ( (bytesReader = input.read(readbuffer, 0, 8192)) != -1) {

        output.write(readbuffer, 0, bytesReader);

      }

      output.close();

    }

    catch (Exception e) {

      e.printStackTrace();

    }

    request.setAttribute("theText", theText);

    request.setAttribute("fileName", file.getFileName());//上传的文件名

    request.setAttribute("fileSize", new Integer(file.getFileSize()));//文件大小

    request.setAttribute("fileType", file.getContentType());//文件类型

    return actionMapping.findForward("success");

  }

}

posted @ 2008-02-21 09:18  Have a try  阅读(3984)  评论(8编辑  收藏  举报