注册本站  论坛  繁體中文

电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Java >> 开源技术 >> Struts >> Java正文

基于Struts1.2的动态多文件上传

文章来源:中国IT实验室收集整理 作者:佚名 更新时间:2008-5-25 3:49:30 【 】 【加入收藏

    首先是web.xml配置

    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

    <web-app>

           <servlet>
               <servlet-name>action</servlet-name>
               <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
                   <init-param>
                     <param-name>config</param-name>
                     <param-value>/WEB-INF/struts-config.xml</param-value>
                   </init-param>
               <load-on-startup>2</load-on-startup>
           </servlet>

          <servlet-mapping>
               <servlet-name>action</servlet-name>
               <url-pattern>*.do</url-pattern>
         </servlet-mapping>

    </web-app>
    然后是struts-config.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

    <struts-config>
      <data-sources />
      <form-beans >
        <form-bean name="multiUploadForm" type="com.hb.struts.form.MultiUploadForm" />
      </form-beans>

      <global-exceptions />
      <global-forwards />
      <action-mappings >
        <action
          attribute="multiUploadForm"
          name="multiUploadForm"
          path="/multiUpload"
          scope="request"
          type="com.hb.struts.action.MultiUploadAction"
          validate="false" />

      </action-mappings>
      <message-resources parameter="com.hb.struts.ApplicationResources" />
    </struts-config>

    然后是页面test.jsp,这段就是网上COPY的动态生成页面

    <%@ page language="java" pageEncoding="utf-8"%>

    <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-logic" prefix="logic" %>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html:html>
    <head>
    <title>
    multiUploadDemo
    </title>

    <script language="javascript">
     var num = 0;

     function upload(){
      document.getElementById("status").innerHTML = "文件上传中...";
         multiUploadForm.submit();
       }

    function additem(id)
    {
     var row,cell,str;

     row = eval("document.all["+'"'+id+'"'+"]").insertRow();
     if(row != null )
        {
           cell = row.insertCell();
           str="<input type="+'"'+"file"+'"'+" name=uploadFile["+ num +"].file><input type="+'"'+"button"+'"'+" value="+'"'+"删除"+'"'+" onclick='deleteitem(this,"+'"'+"tb"+'"'+");'>"
          cell.innerHTML=str;
        }
     num++;
    }
    function deleteitem(obj,id)
    {
     var rowNum,curRow;
     curRow = obj.parentNode.parentNode;
     rowNum = eval("document.all."+id).rows.length - 1;
     eval("document.all["+'"'+id+'"'+"]").deleteRow(curRow.rowIndex);
    }
    function callback(msg)
    {
     document.getElementById("status").innerHTML = "文件上传完成...<br>" + msg;
    }
    </script>
    <body bgcolor="#ffffff">
    <div id="status"></div>
    <html:form method="post" action="/multiUpload.do" enctype="multipart/form-data" target="hidden_frame">

    <table id="tb">
    </table>

    </html:form>
    <iframe name='hidden_frame' id="hidden_frame" style="display:none"></iframe>
    <input type="button" name="btnAddFile" value="Add File" onclick="additem('tb')"/>
    <input type="button" name="btnUpload" value="upload" onclick="upload()"/>
    </body>
    </html:html>

    下面是FORM和ACTION


    我把下面2个文件放在FORM包中

    UploadFile .java

    package com.hb.struts.form;
    import java.io.Serializable;

    import org.apache.struts.upload.FormFile;

    public class UploadFile implements Serializable {
      private  FormFile  file;
         public  FormFile  getFile()  {
                 System.out.println("run  in  uploadFile.getFile()");
                 return  file;
         }
         public  void  setFile(FormFile  file)  {
                 this.file  =  file;
         }
    }

    MultiUploadForm .java

    package com.hb.struts.form;
    import java.util.ArrayList;
    import java.util.List;

    import org.apache.struts.action.ActionForm;

    import com.hb.struts.UploadFile;

    public class MultiUploadForm extends ActionForm {
     private  List  myFiles;

        public  MultiUploadForm(){
                myFiles  =  new  ArrayList();
                myFiles.add(new  UploadFile());
        }
        public  List  getMyFiles()  {
                return  myFiles;
        }

    //注意这个方法的定义  不加中间的循环是会出错的

      public  UploadFile  getUploadFile(int  index){
                int  size  =  myFiles.size();
                if(index>size-1){
                 for(int i=0;i<index-size+1;i++){
                        myFiles.add(new  UploadFile());
                 }
                }
                return  (UploadFile)myFiles.get(index);
        }
        public  void  setMyFiles(List  myFiles)  {
                this.myFiles  =  myFiles;
        }


    }

    最后是action

    package com.hb.struts.action;

    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.List;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.upload.FormFile;

    public class MultiUploadAction extends Action {
     public ActionForward execute(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response) {
      MultiUploadForm multiUploadForm = (MultiUploadForm) form;

      List myFiles = multiUploadForm.getMyFiles();
      String fileStr = "";
      for (int i = 0; i < myFiles.size(); i++) {
       UploadFile uploadFile = (UploadFile) myFiles.get(i);
       FormFile file = uploadFile.getFile();

       if (file == null) {
        System.out.println("file  is  null");
       } else {

        // 能运行到这里,就可以使用单个文件上传的方法进行上传了。循环而已
        System.out.println("filename>>>>>>>>>>" + file.getFileName());
        System.out.println("file  size>>>>>>>>>>" + file.getFileSize());
        fileStr += "filename:::" + file.getFileName() + "file  size:::"
          + file.getFileSize();

       }
      }
      // 返回文本
      try {
       response.setHeader("ContentType", "text/html;charset=gbk");
       PrintWriter out = response.getWriter();
       out.write("<script>parent.callback('upload file success" + fileStr
         + "')</script>");
      } catch (IOException e) {
       e.printStackTrace();
      }

      return null;
     }

    }


    这个是我从现在写好的里截取的一部分,可能还是有不正确的地方,但是大体的思想是在这了 struts1.2 我用的jar包

 

  • 上一篇Java:

  • 下一篇Java:
  • 最 新 热 门
     J2SE实现windows读取网卡的物理地址
     Eclipse使用及配置
     谈自定义Exception进行错误处理
     介绍下Eclipse中如何debug程序?
     Eclipse下开发struts完整解决乱码问题
     Eclipse快速上手指南之使用JUnit
     Eclipse中建立自己的JUnit测试
     Java编程—Spring AOP本质(6)
     Scala—Java的避难所之main(String[])
     Spring数据源的灵活配置巧应用
    最 新 推 荐
     开源技术—struts2中i18n的设置
     一个struts2和spring2的整合
     struts2从一个aciton跳转到另一个action
     struts2的action中获得request response se…
     struts2 + spring + hibernate 实现CRUD
     Struts1.2实现MySQL数据库分页
     基于Struts1.2的动态多文件上传
     Struts--使用validate方法验证数据。
     Struts--使用validate方法验证数据
     Struts 2, spring 2, hibernate 的整合
    相 关 文 章

    Eclipse下开发struts完整解决乱码问题
    Scala—Java的避难所之main(String[])
    Struts 2, spring 2, hibernate 的整合
    开源技术—struts2中i18n的设置
    一个struts2和spring2的整合
    struts2从一个aciton跳转到另一个action
    struts2的action中获得request response se…
    struts2 + spring + hibernate 实现CRUD
    Struts1.2实现MySQL数据库分页
    Struts--使用validate方法验证数据。

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

     

    Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    本网站所有内容未经许可不得转载或做其他使用