多附件上传的问题,仿163,强人看下
<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
强人帮忙分析下啊
[解决办法]
如上一个循环
就把所有的文件都取出来了