Jquery和BigFileUpload实现大文件上传及进度条显示


Posted in Javascript onJune 27, 2016

实现方法:用到了高山来客 的bigfileupload组件,用高山来客的方法,弹出一个模式窗口,然后不停刷新获取进度,始终觉得体验感不好,于是想到用jquery来实现无刷新进度显示,因为提交页面后, 不能让其刷新页面,而是要不断地通过ajax获取progress.aspx返回的进度信息,所以用到了jquery.form的ajaxform提交。ajaxform提交后如果执行提交后的事件,比如在数据库里插入记录,还在调试中。

1、用到了jquery 的 progressbar 、form、MultFile及相关组件

<script src="../../common/js/jquery-1.2.6.pack.js" type="text/javascript"></script> 
<script src="../../common/jqControl/packed/ui.core.packed.js" type="text/javascript"></script> 
<!--FORM--> 
<script src="../../common/jqControl/ajax/jquery.form.js" type="text/javascript"></script> 
<!--上传文件--> 
<script src="../../common/jqControl/upLoad/jquery.MultiFile.pack.js" type="text/javascript"></script> 
<!--进度条--> 
<script src="../../common/jqControl/packed/ui.progressbar.packed.js" type="text/javascript"></script> 
<!--对话框--> 
<!--我的JS --> 
<link href="../../common/Css/jquery-ui-themeroller.css" rel="stylesheet" type="text/css" /> 
<script src="../gadget/JS/uploadfile.js" type="text/javascript">

Jquery和BigFileUpload实现大文件上传及进度条显示 

2.uploadfile.js代码如下:

$(function() 
{ 
var info = '<div style="display:none" id="uploadinfo">'; 
info += '<p>正在上传: <span id="uploadfilename"></span></p>'; 
info += '<p>上传速度: <span id="uploadrate"></span> </p>'; 
info += '<p>状态: <span id="uploadtitle"></span></p>'; 
info += '<p>预计剩余时间: <span id="uploadlefttime"></span></p>'; 
info += '<p>上传文件大小: <span id="uploadtotal"></span></p>'; 
info += '<p>已上传大小: <span id="uploadcurrent"></span></p>'; 
info += '<p><div id="uploadprogressbar"></div></p>'; 
info += '</div><div id="dialogsucc" > '; 
$("body").append(info); 
//进度条 
$("#uploadprogressbar").progressbar(); 
//上传 
$('#fileupload').MultiFile(); 
$('#btshow').click(function() 
{ 
alert($("body").html()); 
}); 
//提交 
$('#btnsubmit').click(function() 
{ 
$("#uploadForm").ajaxSubmit( 
{ 
dataType: 'text', 
beforeSubmit: function(a,f,o) 
{ 
startProgress(); 
}, 
async:false, 
success: function(data) 
{ 
//$("#dialogsucc").text(data); 
//stopProgress(); 
if(data.succ==1) 
{ 
/* $("#dialogsucc").show(); 
$("#dialogsucc").dialog( 
{ 
modal: true, 
overlay: 
{ 
opacity: 0.5, 
background: "black" 
} 
}); */ 
} 
}, 
error:function(err) 
{ 
alert(err); 
} 
}); 
}); 
}); 
function getProgress(){ 
$.ajax({ 
type: "post", 
dataType:"json", 
url: "uploadProgress.aspx", 
data: "UploadID=" + $("#UploadID").val(), 
success: function(data){ 
$("#uploadprogressbar").progressbar("progress", data.percent); 
$("#uploadfilename").html(data.filename); 
$("#uploadrate").html(data.rate); 
$("#uploadtitle").html(data.info); 
$("#uploadlefttime").html(data.lefttime); 
$("#uploadtotal").html(data.total); 
$("#uploadcurrent").html(data.current); 
if(data.succ==-1){ 
alert(data.errmsg); 
} 
if (data.succ==0){ 
setTimeout("getProgress()", 1000); 
} 
if (data.succ==1){ 
return; 
} 
}, 
error:function(msg) 
{ 
alert(msg); 
} 
}); 
} 
function startProgress(){ 
$("#uploadinfo").show(); 
setTimeout("getProgress()", 500); 
} 
function stopProgress() 
{ 
$("#uploadinfo").hide(); 
}

3:progress.aspx代码如下:

protected void Page_Load(object sender, EventArgs e) 
{ 
try 
{ 
string s = "{"; 
UploadContext upload = UploadContextFactory.GetUploadContext(Request["UploadID"]); 
//初始化 
if (upload.Status == uploadStatus.Initializing) 
{ 
s += responeJSON(upload, "0", ""); 
} 
if (upload.Status == uploadStatus.Uploading) 
{ 
s += responeJSON(upload, "0", ""); 
} 
if (upload.Status == uploadStatus.Complete) 
{ 
s += responeJSON(upload, "1", ""); 
} 
if (upload.Status == uploadStatus.HasError) 
{ 
s += responeJSON(upload, "-1", ""); 
} 
s += "}"; 
Response.Write(s); 
} 
catch (Exception err) 
{ 
//throw err; 
Response.Write("{'info':'" + err.Message.Replace("'", "") + "','succ':-1}"); 
} 
} 
private string responeJSON(UploadContext upload, string succ,string errmsg) 
{ 
string s = ""; 
s += "'info':'" + upload.FormatStatus + "'" ; 
s += ",'percent':'" + Convert.ToInt32((upload.Readedlength * 100.0 / upload.TotalLength)).ToString() + "'"; 
s += ",'current':'" + (upload.Readedlength/1024).ToString() + "KB'"; 
s += ",'total':'" + (upload.TotalLength/1024).ToString() + "KB'"; 
s += ",'rate':'" + upload.FormatRatio + "'"; 
s += ",'filename':'" + upload.CurrentFile + "'"; 
s += ",'cancel_upload':" + 0 ; 
s += ",'lefttime':'" + upload.LeftTime + "'"; 
s += ",'succ':" + succ; 
s += ",'errmsg':'" + errmsg +"'"; 
return s; 
}

4.ajaxForm执行后,能够正常运行,那上传文件后,我如何执行其它操作,研究完了再发

以上所述是小编给大家介绍的Jquery和BigFileUpload实现大文件上传及进度条显示,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript attachEvent和addEventListener使用方法
Mar 19 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
Sep 20 Javascript
jquery增加时编辑jqGrid(实例代码)
Nov 08 Javascript
嵌入式iframe子页面与父页面js通信的方法
Jan 20 Javascript
Javascript中的方法和匿名方法实例详解
Jun 13 Javascript
jquery实现可横向和竖向展开的动态下滑菜单效果
Aug 24 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
Oct 08 Javascript
基于jquery日历价格、库存等设置插件
Jul 05 jQuery
Angular通过angular-cli来搭建web前端项目的方法
Jul 27 Javascript
JS设计模式之命令模式概念与用法分析
Feb 06 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
Oct 26 Javascript
详解基于Vue/React项目的移动端适配方案
Aug 23 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
Jun 27 #Javascript
JavaScript事件详细讲解
Jun 27 #Javascript
JS原型链怎么理解
Jun 27 #Javascript
js选择器全面解析
Jun 27 #Javascript
通过javascript进行UTF-8编码的实现方法
Jun 27 #Javascript
jQuery实现每隔几条元素增加1条线的方法
Jun 27 #Javascript
jQuery实现查找链接文字替换属性的方法
Jun 27 #Javascript
You might like
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
PHP getName()函数讲解
2019/02/03 PHP
PHP保存Base64图片base64_decode的问题整理
2019/11/04 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
实现51Map地图接口(示例代码)
2013/11/22 Javascript
IE6下拉框图层问题探讨及解决
2014/01/03 Javascript
页面装载js及性能分析方法介绍
2014/03/21 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
Highcharts使用简例及异步动态读取数据
2015/12/30 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
Vuex2.0+Vue2.0构建备忘录应用实践
2016/11/30 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
antd-日历组件,前后禁止选择,只能选中间一部分的实例
2020/10/29 Javascript
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
举例讲解Linux系统下Python调用系统Shell的方法
2015/11/07 Python
深入解析Python中的线程同步方法
2016/06/14 Python
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
Python中psutil的介绍与用法
2019/05/02 Python
python ChainMap的使用和说明详解
2019/06/11 Python
Django之创建引擎索引报错及解决详解
2019/07/17 Python
python实现按行分割文件
2019/07/22 Python
用Python画一个LinkinPark的logo代码实例
2019/09/10 Python
pytorch标签转onehot形式实例
2020/01/02 Python
java字符串格式化输出实例讲解
2021/01/06 Python
Penhaligon’s英国官网:成立于1870年的英国香水制造商
2021/02/18 全球购物
校运会广播稿100字
2014/01/27 职场文书
优秀毕业自我鉴定
2014/02/15 职场文书
全国优秀辅导员事迹材料
2014/05/14 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
幼儿园万圣节活动总结
2015/05/05 职场文书
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS