• Struts的文件上传


    转载他人,收集
    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就是随便写一个成功页-->
  • 相关阅读:
    代替elk的命令
    redis查找bigkeys--密码带特殊字符
    mysql5.7.1.log数据库改名
    kubesphere tomcat 日志 中文 乱码
    split切割大文件 批量查看日志
    文件内容正则批量替换
    font元素批量更换成font元素
    C#(99):资源与本地化 System.Resources
    ASP.NET Web网站本地化
    为WinForm项目添加帮助文档
  • 原文地址:https://www.cnblogs.com/QDuck/p/372682.html
Copyright © 2020-2023  润新知