<script   language="javascript">   
     //动态文件记数器
var num=0;
//div内容
var divstr="";
//添加的文件名数组
var filename=new Array();
function   File1_onchange()   {   
//判断添加文件是否重复
var pathfile = document.PostForm.File1.value;
//alert("infilepathandname = "+pathfile);
var name = pathfile.substring(pathfile.lastIndexOf('\\')+1);
//alert("infilename = "+name);

if(checkAgainFile(name)){
alert("该文件已经添加!");
return false;
}

if(checkFileNum(name)){
alert("最大文件不能超过5");
return false;
}

//先+file控件
addFile();
//把File1取得的值赋给新添加的file控件上
document.getElementsByName('uploadFiles'+num).value=document.PostForm.File1.value ;   
alert(document.getElementsByName('uploadFiles'+num).value);
//表层的表示
adddiv();

//for(var i=0;i<num;i++){
//var t=i+1;
//alert(document.getElementsByName('uploadFiles'+t).value);
//}

/*
for(var i=0;i<num;i++){
var t=i+1;
alert(document.getElementsByName('uploadFiles'+t).value);
}

for(var i=0;i<filename.length;i++){
alert("filenames="+filename[i]);
}
*/
//document.PostForm.File1.select();
//document.execCommand('delete'); 
}   

//添加层内容
function adddiv(){
var obj=document.getElementById("showFile");
var fileStr =document.getElementsByName('uploadFiles'+num).value;
var fileName = fileStr.substring(fileStr.lastIndexOf('\\')+1);
//增加数组内容
filename[filename.length]=fileName;
var addStr="<a href='javascript:DelFile("+num+")'><img src='image/attach.gif' alt='删除' /></a>"+";";
divstr=divstr+fileName+addStr ; 
obj.innerHTML=divstr;
}
//减少层内容
function deldiv(delno){
//var str = "This is a string";
//alert(str.substring(1, 3)); //结果为hi 
//alert(str.substring(3, 1)); //结果为hi 
//alert(str.substring(0, 4)); //结果为This 
//alert(str.substring(8)); //结果为a string

var newDivStr ="";
var a=new Array();

divstr=divstr.substring(0,divstr.lastIndexOf(';')); a=divstr.split(";");

var del=(new Number(delno));
for(var i=0;i<a.length;i++){
if(i!=del)
newDivStr=newDivStr+a[i]+";";

}
divstr=newDivStr;
}
 
//增加file控件
function addFile(){
var tableobj=document.getElementById('table1');
var Row1=tableobj.insertRow(tableobj.rows.length);
//rows就是行数的集合,tableobj.rows.length是获得表格的行数
var Rows=tableobj.rows;
//cells是表元,就是<td></td>
var Cells=Row1.cells;
var Cell1=Rows(Row1.rowIndex).insertCell();
Cell1.align="left"; 
Cell1.innerHTML="<input   type='file' class ='addfile'  name='uploadFiles["+num+"]' id='uploadFile"+num+"'>";
num++;
   
}//减去file控件
function DelFile(delnum ){
alert("delfile");
var tableobj=document.getElementById('table1');
var delnum=(new Number(delnum))-1;

var obj=document.getElementById("showFile");
// 删除行
tableobj.deleteRow(delnum);
var j=(new Number(delnum))+1;
for(;j < num;j++) {
    // 获得浏览按钮的id的值
var fileobj=document.all("uploadFile"+j);
var str = "uploadFiles["+(j-1)+"].file";
var strid="uploadFile"+(j-1);
// 删除后把下一个浏览按钮的id和名字的下标减1
fileobj.setAttribute("name",str);
fileobj.setAttribute("id",strid);

}
num--;
//删除数组文件名
filename.splice( delnum, 1 );

for(var i=0;i<filename.length;i++){
alert("filenames="+filename[i]);
}


deldiv(delnum);
obj.innerHTML=divstr;
}function checkAgainFile(infilename ){
var flag =false;
for(var i=0;i<filename.length;i++){
if(filename[i]==infilename)flag = true;
}
return flag;
}function checkFileNum( ){
var flag =false;
if(filename.length>=4){
flag = true;
}

return flag;
}
  </script>
<table id="table1" border="1" >
<div id = "showFile" style="padding:5px;border:1px;border-style:solid;border-color:#0000ff;height:10px;width:600px;"></div><a href=#? class="addfile">
<INPUT   id="File1"   type="file"   class="addfile" name="File1"  size="1" language="javascript"   onchange="return   File1_onchange()">   
</a></td>
</table>问题是动态生成的文件,上传后只能取到最后一个值,使用SmartUpload
强人帮忙分析下啊

解决方案 »

  1.   

    可以获取数组的啊
    兄弟可以看看smartupload的api
    有一个获取单个文件的
    还有一个获取文件数组的
      

  2.   

    楼主看看我写的:
    com.jspsmart.upload.Files smartFiles = mySmartUpload.getFiles();
          for(int i = 0; i < smartFiles.getCount(); i++) {
      

  3.   

    我知道我的问题了,
    //把File1取得的值赋给新添加的file控件上
    document.getElementsByName('uploadFiles'+num).value=document.PostForm.File1.value 
    估计上面的写法是不可以的,所以取出来为空