jquery 实现拖动文件上传加载进度条功能


Posted in jQuery onMarch 18, 2018

通过对文件的拖动实现文件的上传,主要用到的是HTML5的ondrop事件,上传内容通道FormData传输:

//进度条
<div class="parent-dlg" >
 <div class="progress-label">0%</div>
 <div class="son"></div>
</div>
//要拖动到的地方
<div class="main_content_center"></div>

js:

var dz = $('#main_content_center');
dz.ondragover = function(ev) {
 //阻止浏览器默认打开文件的操作
 ev.preventDefault();
}
dz.ondrop = function(ev) {
 ev.preventDefault();
 var files = ev.dataTransfer.files;
 var len = files.length,i = 0;
 while (i < len) {
  var filesName=files[i].name;
  var extStart=filesName.lastIndexOf(".");
  var ext=filesName.substring(extStart,filesName.length).toUpperCase();
  if(ext!=".JPG"&&ext!=".PNG"&&ext!=".XML"){ //判断是否是需要的问件类型
  TS.errorAlert("请选择.jpg、.png、.xml类型的文件上传!");
  return false;
  }else{
  test(files[i]);
  }
  i++;
 }
 $(".parent-dlg").show();
}
function test(a){
 var formData = new FormData();
 formData.append("name", a.name);
 formData.append("size", a.size);
 formData.append("data", a);
 $.ajax({
 url:'',
 type:'post',
 data:formData,
 cache: false,
 processData: false,
 contentType: false,
 xhr: function(){
 var xhr = $.ajaxSettings.xhr();
 if(onprogress && xhr.upload) {
  xhr.upload.addEventListener("progress" , onprogress, false);
  return xhr;
 }
 } 
 })
};
function onprogress(evt){
 var loaded = evt.loaded;  //已经上传大小情况 
 var tot = evt.total;  //附件总大小 
 var per = Math.floor(100*loaded/tot); //已经上传的百分比 
 $(".progress-label").html( per +"%" );
 $(".son").css("width" , per +"%");
 if(per>=100){
 $(".parent-dlg").hide();
 }
 }

 进度条css:

.parent-dlg{position: absolute;width:400px; height:20px; border:1px solid #aaaaaa;border-radius:3px;top:30%;left:50%;z-index:9999;margin-left:-200px;display:none;}
.parent-dlg .progress-label{position: absolute;left: 50%;top: 4px;font-weight: bold;text-shadow: 1px 1px 0 #fff;} 
.parent-dlg .son {width:0; height:100%; background-color:#cccccc; text-align:center; line-height:20px; font-size:16px; font-weight:bold;}

 此内容只是一个大概的文件上传技术方向,可根据自己的项目进行改进! 

总结

以上所述是小编给大家介绍的jquery 实现拖动文件上传加载进度条功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

jQuery 相关文章推荐
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
Jun 11 jQuery
jQuery Datatable 多个查询条件自定义提交事件(推荐)
Aug 24 jQuery
jQuery创建及操作xml格式数据示例
May 26 jQuery
jQuery实现仿京东防抖动菜单效果示例
Jul 06 jQuery
jQuery插件实现弹性运动完整示例
Jul 07 jQuery
jQuery扩展方法实现Form表单与Json互相转换的实例代码
Sep 05 jQuery
jquery拖拽自动排序插件使用方法详解
Jul 20 jQuery
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
Feb 27 jQuery
jquery 验证用户名是否重复代码实例
May 14 jQuery
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
Jun 06 jQuery
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
Aug 27 jQuery
jQuery操作事件完整实例分析
Jan 10 jQuery
jQuery中each方法的使用详解
Mar 18 #jQuery
jquery点击回车键实现登录效果并默认焦点的方法
Mar 09 #jQuery
JQuery选中select组件被选中的值方法
Mar 08 #jQuery
jQuery+koa2实现简单的Ajax请求的示例
Mar 06 #jQuery
轻松搞定jQuery+JSONP跨域请求的解决方案
Mar 06 #jQuery
jQuery实现左右滑动的toggle方法
Mar 03 #jQuery
jquery radio 动态控制选中失效问题的解决方法
Feb 28 #jQuery
You might like
玩转虚拟域名◎+ .
2006/10/09 PHP
PHP面向接口编程 耦合设计模式 简单范例
2011/03/23 PHP
探讨:使用XMLSerialize 序列化与反序列化
2013/06/08 PHP
php删除指定目录的方法
2015/04/03 PHP
php查询操作实现投票功能
2016/05/09 PHP
ThinkPHP3.2.3实现分页的方法详解
2016/06/03 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
PHP+MySQL实现消息队列的方法分析
2018/05/09 PHP
PHP htmlspecialchars() 函数实例代码及用法大全
2018/09/18 PHP
PHP中PCRE正则解析代码详解
2019/04/26 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
javascript数字格式化通用类 accounting.js使用
2012/08/24 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
自定义刻度jQuery进度条及插件
2015/09/02 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
jQuery轮播图效果精简版完整示例
2016/09/04 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
2016/11/15 Javascript
浅谈javascript中的 “ &amp;&amp; ” 和 “ || ”
2017/02/02 Javascript
Vue Element使用icon图标教程详解(第三方)
2018/02/07 Javascript
vue-router 源码之实现一个简单的 vue-router
2018/07/02 Javascript
详解如何在Vue里建立长按指令
2018/08/20 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
jQuery实现的中英文切换功能示例
2019/01/11 jQuery
jQuery操作事件完整实例分析
2020/01/10 jQuery
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
python中的二维列表实例详解
2018/06/19 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
Python通过VGG16模型实现图像风格转换操作详解
2020/01/16 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
Lentiamo荷兰:在线订购隐形眼镜、隐形眼镜液和太阳镜
2019/10/25 全球购物
运动会四百米广播稿
2014/01/19 职场文书
药品营销策划方案
2014/06/15 职场文书
社会实践的活动方案
2014/08/22 职场文书
2015初中政教处工作总结
2015/07/21 职场文书