基于Struts1.2的動(dòng)態(tài)多文件上傳

          test.jsp

          <!--這段就是網(wǎng)上COPY的動(dòng)態(tài)生成頁(yè)面-->

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

          ??? <%@ taglib uri="??? <%@ taglib uri="??? <%@ taglib uri="??? <%@ taglib uri="

          ??? <!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>

          2.form

          我把下面2個(gè)文件放在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;
          ??????? }

          ??? //注意這個(gè)方法的定義 不加中間的循環(huán)是會(huì)出錯(cuò)的

          ????? 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;
          ??????? }


          ??? }

          3.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 {

          ??????? // 能運(yùn)行到這里,就可以使用單個(gè)文件上傳的方法進(jìn)行上傳了。循環(huán)而已
          ??????? 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;
          ???? }

          ??? }
          轉(zhuǎn)自:
          http://hi.baidu.com/yanglu_168/blog/item/12c1382a4bc35028d42af1bd.html

          posted on 2010-06-25 09:26 飛熊 閱讀(882) 評(píng)論(0)  編輯  收藏 所屬分類: 上傳下載


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2010年6月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 石渠县| 晴隆县| 普兰县| 板桥市| 康乐县| 杭锦旗| 乐山市| 甘谷县| 锡林郭勒盟| 静乐县| 洞头县| 资溪县| 招远市| 册亨县| 镇康县| 河东区| 鄯善县| 芦山县| 广东省| 汉川市| 赤城县| 客服| 岑巩县| 新源县| 神池县| 榆社县| 南开区| 定兴县| 堆龙德庆县| 都兰县| 云浮市| 乌拉特后旗| 出国| 常宁市| 环江| 固始县| 林芝县| 南昌市| 花垣县| 吐鲁番市| 遂昌县|