基于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"> ??? <script language="javascript"> ???? function upload(){ ??? function additem(id) ???? row = eval("document.all["+'"'+id+'"'+"]").insertRow(); ??? <table id="tb"> ??? </html:form>
2.form
我把下面2個(gè)文件放在FORM包中
??? UploadFile .java ??? package com.hb.struts.form; ??? import org.apache.struts.upload.FormFile; ??? public class UploadFile implements Serializable { ??? MultiUploadForm .java ??? package com.hb.struts.form; ??? import org.apache.struts.action.ActionForm; ??? import com.hb.struts.UploadFile; ??? public class MultiUploadForm extends ActionForm { ??????? public MultiUploadForm(){
??? //注意這個(gè)方法的定義 不加中間的循環(huán)是會(huì)出錯(cuò)的
????? public UploadFile getUploadFile(int index){
3.action package com.hb.struts.action; ??? import java.io.IOException; ??? import javax.servlet.http.HttpServletRequest; ??? import org.apache.struts.action.Action; ??? public class MultiUploadAction extends Action { ????? List myFiles = multiUploadForm.getMyFiles(); ?????? if (file == null) { ??????? // 能運(yùn)行到這里,就可以使用單個(gè)文件上傳的方法進(jìn)行上傳了。循環(huán)而已 ?????? } ????? return null; ??? }
posted on 2010-06-25 09:26 飛熊 閱讀(882) 評(píng)論(0) 編輯 收藏 所屬分類: 上傳下載
??? <html:html>
??? <head>
??? <title>
??? multiUploadDemo
??? </title>
???? var num = 0;
????? document.getElementById("status").innerHTML = "文件上傳中...";
???????? multiUploadForm.submit();
?????? }
??? {
???? var row,cell,str;
???? 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>
??? <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>
??? import java.io.Serializable;
????? private FormFile file;
???????? public FormFile getFile() {
???????????????? System.out.println("run in uploadFile.getFile()");
???????????????? return file;
???????? }
???????? public void setFile(FormFile file) {
???????????????? this.file = file;
???????? }
??? }
??? import java.util.ArrayList;
??? import java.util.List;
???? private List myFiles;
??????????????? myFiles = new ArrayList();
??????????????? myFiles.add(new UploadFile());
??????? }
??????? public List getMyFiles() {
??????????????? return myFiles;
??????? }
??????????????? 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;
??????? }
??? }
??? import java.io.PrintWriter;
??? import java.util.List;
??? import javax.servlet.http.HttpServletResponse;
??? 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 ActionForward execute(ActionMapping mapping, ActionForm form,
?????? HttpServletRequest request, HttpServletResponse response) {
????? MultiUploadForm multiUploadForm = (MultiUploadForm) form;
????? String fileStr = "";
????? for (int i = 0; i < myFiles.size(); i++) {
?????? UploadFile uploadFile = (UploadFile) myFiles.get(i);
?????? FormFile file = uploadFile.getFile();
??????? 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();
????? }
???? }
轉(zhuǎn)自:http://hi.baidu.com/yanglu_168/blog/item/12c1382a4bc35028d42af1bd.html