怎样实现逐个上传文件?
现有一个table如下数据
-------------------------------------------
文件名 类型 大小(MB) 操作提示
-------------------------------------------
d:\A.jpg 图片 0.32 删除
d:\B.wmv 视频 5.63 删除
d:\C.txt 文本 0.02 删除
d:\D.wmv 视频 60.02 删除
-------------------------------------------
<批量上传>
需要实现如下效果,逐个上传
-------------------------------------------
文件名 类型 大小(MB) 操作提示
-------------------------------------------
d:\A.jpg 图片 0.32 成功
d:\B.wmv 视频 5.63 .... (正在上传)
d:\C.txt 文本 0.02 删除
d:\D.wmv 视频 60.02 删除
-------------------------------------------
<批量上传>
实现逐个上传,如上图,要求必须 '图片A '上传成功/失败后,方可继续下一个文件的上传;现在遇到不知要如何实现逐个上传?
代码如下javascript,(代码可以实现文件上传,就是无法逐个地上传,并做出提示?):
var iRes=0;
function Upfile(){
var leng=filesTable.rows.length;
var file,name;
//遍历table中的所有文件
for(var i=0;i <leng;i++){
file= filesTable.rows[i].cells[0].innerText;
filesTable.rows[i].cells[3].innerText= "... ";
//alert( 'iRes= '+iRes);
if(iRes==0){
ajaxMethod( '/fileAction.do?method=UpFiles&file= '+file+ '&name= '+name+ '&tr= '+i,batchUpFiles);
iRes=-1;
}
}
}
function batchUpFiles(){
if(xmlHttp.readyState == 4){
if(xmlHttp.status == 200){
// alert(xmlHttp.responseText);
var result=xmlHttp.responseXML.getElementsByTagName( "result ")[0].firstChild.data;
var trs=xmlHttp.responseXML.getElementsByTagName( "trs ")[0].firstChild.data;
var j=parseInt(trs);
//alert(trs);
iRes=result;
//alert( 'ajax-iRes= '+iRes);
filesTable.rows[j].cells[3].innerText= "成功 ";
}
else{
alert( 'error: '+xmlHttp.statusText+ ' '+xmlHttp.status);
}
}
}
function ajaxMethod(url,callback){
if(window.ActiveXObject)
xmlHttp = new ActiveXObject( "Microsoft.XMLHTTP ");
else if(window.XMLHttpRequest)
xmlHttp = new XMLHttpRequest();
if(xmlHttp){
xmlHttp.open( "POST ",url,true);
xmlHttp.setRequestHeader( "CONTENT-TYPE ", "application/x-www-form-urlencoded ");
xmlHttp.onreadystatechange = callback;
xmlHttp.send(null);
}
}
[解决办法]
介意定义四个函数,每个函数实现一个上传,成功则继续,失败返回
[解决办法]
一个文件一个form,逐个提交试试
[解决办法]
"介意定义四个函数 "
可能是四个么?!
dom做一个表格,可以增添/删除项目(就是文件实体)
批量上传时,计算表格行数(上传量)
定制一个Ajax上传函数,点击 "批量上传 "触发,Ajax返回确认消息,判断消息回调上传函数,直到到达上传量时,退出回调
var c=0;
function upload()
{
if(c> table.length)return false;
ajax();
c++;
}
function ajax()
{
//发送到服务器
//回调ajax_callback();
}
function ajax_callback(data)
{
//if(data)//判断消息.
{
upload();
}
}