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写的验证表单(实例讲解)
Jul 06 jQuery
浅谈jQuery框架Ajax常用选项
Jul 08 jQuery
jQuery 1.9版本以上的浏览器判断方法代码分享
Aug 28 jQuery
jQuery实现的文字逐行向上间歇滚动效果示例
Sep 06 jQuery
jQuery 禁止表单用户名、密码自动填充功能
Oct 30 jQuery
jQuery实现简单的下拉菜单导航功能示例
Dec 07 jQuery
关于jquery中attr()和prop()方法的区别
May 28 jQuery
jQuery pjax 应用简单示例
Sep 20 jQuery
jQuery实现简单的Ajax调用功能示例
Feb 15 jQuery
Vue CLI3.0中使用jQuery和Bootstrap的方法
Feb 28 jQuery
jQuery实现弹出层效果
Dec 10 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
十大“创意”战术!
2020/03/04 星际争霸
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
PHP goto语句用法实例
2019/08/06 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
javascript Array.remove() 数组删除
2009/08/06 Javascript
jquery 选项卡效果 新手代码
2011/07/08 Javascript
简单的jquery拖拽排序效果实现代码
2011/09/20 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
详解RequireJs官方使用教程
2017/10/31 Javascript
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
JS对日期操作封装代码实例
2019/11/08 Javascript
利用Python绘制MySQL数据图实现数据可视化
2015/03/30 Python
Python cookbook(数据结构与算法)让字典保持有序的方法
2018/02/18 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
从numpy数组中取出满足条件的元素示例
2019/11/26 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
2020/04/22 Python
python百行代码自制电脑端网速悬浮窗的实现
2020/05/12 Python
详解HTML5.2版本带来的修改
2020/05/06 HTML / CSS
摩顿布朗英国官方网上商店:奢华沐浴、身体和头发护理
2016/10/29 全球购物
最新销售员个人自荐信
2013/09/21 职场文书
商场消防管理制度
2014/01/12 职场文书
宝宝周岁宴答谢词
2014/01/26 职场文书
幼儿园数学教学反思
2014/02/02 职场文书
乡镇交通安全实施方案
2014/03/29 职场文书
年终晚会活动方案
2014/08/21 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
单位租房协议书范本
2014/12/04 职场文书
初中信息技术教学计划
2015/01/22 职场文书
2015年人事工作总结范文
2015/04/09 职场文书
详解Go语言Slice作为函数参数的使用
2021/07/02 Golang
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL
Python实现抖音热搜定时爬取功能
2022/03/16 Python