当前位置: 网学 > 编程文档 > Ajax > 正文

JQuery+ajax实现批量上传图片(自写)

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/07/08

以下是网学网为您推荐的Ajax-JQuery+ajax实现批量上传图片(自写),希望本篇文章对您学习有所帮助。

在网上搜索了一下,发现以jquery+ajax方式实现单张图片上传的代码是有的,但实现批量上传图片程序却没搜索到,于是根据搜索到的代码,写了一个可以批量上传的。
先看效果图

JQuery+ajax实现批量上传图片

点击增加按钮,会增加一个选择框,如下图:

JQuery+ajax实现批量上传图片


选择要上传的图片,效果图如下:

JQuery+ajax实现批量上传图片


上传成功如下图:

JQuery+ajax实现批量上传图片

JQuery+ajax实现批量上传图片

下面来看代码:
前台html主要代码:
复制代码 代码如下:
<button id="SubUpload" class="ManagerButton" onClick="TSubmitUploadImageFile();return false;">确定上传</button>  
<button id="CancelUpload" class="ManagerButton" onClick="javascript:history.go(-1);">取消</button>  
<button id="AddUpload" class="ManagerButton" onClick="TAddFileUpload();return false;">增加</button>
<tr><td class="tdClass">
图片1:
</td><td class="tdClass">
<input name="" size="60" id="uploadImg1" type="file" />
<span id="uploadImgState1"></span>
</td></tr>

因为用了JQuery,所以你完全可以把click事件放在js文件中
“增加”按钮js代码:
复制代码 代码如下:
var TfileUploadNum=1; //记录图片选择框个数
var Tnum=1; //ajax上传图片时索引
function TAddFileUpload()
{
var idnum = TfileUploadNum+1;
var str="<tr><td class=''tdClass''>图片"+idnum+":</td>";
str += "<td class=''tdClass''><input name='''' size=''60'' id=''uploadImg"+idnum+"'' type=''file'' /><span id=''uploadImgState"+idnum+"''>";
str += "</span></td></tr>";
("#imgTable").append(str);
TfileUploadNum += 1;
}


“确定上传”按钮js代码:
复制代码 代码如下:
function TSubmitUploadImageFile()
{
M("SubUpload").disabled=true;
M("CancelUpload").disabled=true;
M("AddUpload").disabled=true;
setTimeout("TajaxFileUpload()",1000);//此为关键代码
}

关于setTimeout("TajaxFileUpload()",1000);这句代码:因为所谓的批量上传,其实还是一个一个的上传,给用户的只是一个假象。只所以要延时执行TajaxFileUpload(),是因为在把图片上传到服务器上时,我在后台给图片重新命名了,命名的规则是,如下代码:
复制代码 代码如下:
Random rd = new Random();
StringBuilder serial = new StringBuilder();
serial.Append(DateTime.Now.ToString("yyyyMMddHHmmssff"));
serial.Append(rd.Next(0, 999999).ToString());
return serial.ToString();

即使我命名精确到毫秒,另外再加上随机数,可是还是有上传的第二张图片把上传的第一张图片覆盖的情况出现。所以此处我设置了延时1秒后在上传下一张图片。刚开始做这个东西的时候,用的是for循环,来把所有的图片一个一个的循环地用ajax上传,可是for循环速度太快了,可能第一张图片还没来得及ajax,第二张就被for过来了,还是有第二张覆盖第一张的情况出现。
下面来看TajaxFileUpload()函数,代码如下:
复制代码 代码如下:
function TajaxFileUpload()
{
if(Tnum<TfileUploadNum+1)
{
//准备提交处理
("#uploadImgState"+Tnum).html("<img src=/uploadfile/201307/8/9B94720844.gif />");
//开始提交
.ajax
({
type: "POST",
url:"/uploadfile/201307/8/F394720238.gif />");//+stringArray+"|"+stringArray);
}
else
{
//上传出错
("#uploadImgState"+Tnum).html("<img src=/uploadfile/201307/8/4494720473.gif />"+stringArray);//+stringArray+"");
}
Tnum++;
setTimeout("TSubmitUploadImageFile()",0);
}
});
}
}

上面的代码没

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号