Struts的文件上传

转载 2005年03月02日 11:14:00
最近刚做完一个项目,用Struts1.1做的。从不懂,到熟练使用,都靠参考CSDN的一些文档。但是文章上讲的并不一定适合自己,所以我把我自己做的一些东西拿上来给大家看看,互相交流一下。如果您有跟好的方法,可以和我联系。
MSN:whw_dream (AT) hotmail.com

Struts的文件上传
本文用的是Struts1.1的org.apache.struts.upload.FormFile类。很方便,不用自己写。也不用写一个jsp调用jspsmartupload就可以搞定。

选择上传文件页面:selfile.jsp



--------------------------------------------------------------------------------
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
<html:html>
<html:form action="/uploadsAction.do" enctype="multipart/form-data">
<html:file property="theFile"/>
<html:submit/>
</html:form>
</html:html>

--------------------------------------------------------------------------------
UpLoadAction.java 
--------------------------------------------------------------------------------
import java.io.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile; 

/**
 * <p>Title:UpLoadAction</p>
 * <p>Description: QRRSMMS </p>
 * <p>Copyright: Copyright (c) 2004 jiahansoft</p>
 * <p>Company: jiahansoft</p>
 * @author wanghw
 * @version 1.0
 */

public class UpLoadAction extends Action {
  public ActionForward execute(ActionMapping mapping,
                               ActionForm form,
                               HttpServletRequest request,
                               HttpServletResponse response)
      throws Exception {
    if (form instanceof uploadsForm) {//如果form是uploadsForm
        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();//取得上传的文件
        try {
          InputStream stream = file.getInputStream();//把文件读入
          String filePath = request.getRealPath("/");//取当前系统路径
          ByteArrayOutputStream baos = new ByteArrayOutputStream();
          OutputStream bos = new FileOutputStream(filePath + "/" +
                                                  file.getFileName());//建立一个上传文件的输出流
          //System.out.println(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();
        }catch(Exception e){
          System.err.print(e);
        }
        //request.setAttribute("dat",file.getFileName());
        return mapping.findForward("display");
    }
    return null;
  }
}



--------------------------------------------------------------------------------

UpLoadForm.java

--------------------------------------------------------------------------------


import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.*;
import org.apache.struts.upload.*;

/**
 * <p>Title:UpLoadForm</p>
 * <p>Description: QRRSMMS </p>
 * <p>Copyright: Copyright (c) 2004 jiahansoft</p>
 * <p>Company: jiahansoft</p>
 * @author wanghw
 * @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;
  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;

  }
}
//这是相对应的form,还有其他属性可以设置,具体可以参考struts的上传例子。




--------------------------------------------------------------------------------

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>
  <form-beans>
    <form-bean name="uploadsForm" type="UpLoadForm" />
  </form-beans>
  <action-mappings>
    <action name="uploadsForm" type="UpLoadAction" path="/uploadsAction">
      <forward name="display" path="/display.jsp" />
    </action>
  </action-mappings>
</struts-config>
<!--display.jsp就是随便写一个成功页-->

Struts2文件上传

  • 2017年11月27日 10:35
  • 104KB
  • 下载

struts文件上传

  • 2017年11月06日 14:47
  • 3KB
  • 下载

struts2 文件上传

一、文件上传页面 uploadPath是相对webroot的路径,即webroot下的路径,将文件上传至该文件夹下。 ...
  • jxq0816
  • jxq0816
  • 2016年05月17日 00:05
  • 204

struts文件上传实例

  • 2016年08月07日 21:49
  • 383KB
  • 下载

struts文件上传

  • 2014年12月14日 14:05
  • 21KB
  • 下载

在struts2中用fileupload实现文件上传

实现原理 Struts 2是通过Commons FileUpload文件上传。Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦...
  • wugouzi
  • wugouzi
  • 2013年09月09日 17:49
  • 5919

uploadify+struts2多文件上传

  • 2017年02月14日 20:45
  • 6.07MB
  • 下载

struts2实现文件上传

struts 2 实现文件上传1.结构2. FileUploadAction.javapackage com.hainu.action;import java.io.File; import java...

struts 文件上传

  • 2015年09月11日 17:59
  • 38.16MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts的文件上传
举报原因:
原因补充:

(最多只允许输入30个字)