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 相关文章推荐
基于Jquery的简单&amp;简陋Tabs插件代码
Feb 09 Javascript
jquery.ajax之beforeSend方法使用介绍
Dec 08 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
Oct 02 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
Dec 07 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
Dec 18 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
Aug 02 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
May 18 Javascript
深入了解JavaScript代码覆盖
Jun 13 Javascript
nest.js 使用express需要提供多个静态目录的操作方法
Oct 24 Javascript
Vue中图片Src使用变量的方法
Oct 30 Javascript
如何基于JS截获动态代码
Dec 25 Javascript
vue 使用微信jssdk,调用微信相册上传图片功能
Nov 13 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数据类型判断函数有哪些
2013/09/23 PHP
PHP上传图片类显示缩略图功能
2016/06/30 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
Javascript学习笔记5 类和对象
2010/01/11 Javascript
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
2010/03/16 Javascript
基于jquery的动态创建表格的插件
2011/04/05 Javascript
nodejs入门详解(多篇文章结合)
2012/03/07 NodeJs
javascript数组去重3种方法的性能测试与比较
2013/03/26 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
2015/03/24 Javascript
利用js实现禁止复制文本信息
2015/06/03 Javascript
Angular.js回顾ng-app和ng-model使用技巧
2016/04/26 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
Angular.js中$resource高大上的数据交互详解
2017/07/30 Javascript
Node.js使用MySQL连接池的方法实例
2018/02/11 Javascript
微信小程序wx:for和wx:for-item的用法详解
2018/04/01 Javascript
微信小程序使用车牌号输入法的示例代码
2019/08/20 Javascript
python之yield表达式学习
2014/09/02 Python
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
2019/08/22 Python
django在保存图像的同时压缩图像示例代码详解
2020/02/11 Python
带你学习Python如何实现回归树模型
2020/07/16 Python
Python利用pip安装tar.gz格式的离线资源包
2020/09/14 Python
会计毕业生自我鉴定
2013/11/04 职场文书
投标承诺书范本
2014/03/27 职场文书
会计学毕业生求职信
2014/06/25 职场文书
社区活动总结
2015/02/04 职场文书
2015年七夕爱情寄语
2015/03/24 职场文书
市场营销计划书
2019/04/24 职场文书
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL
TV动画《政宗君的复仇》第二季制作决定PV公布
2022/04/02 日漫