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获取radio选中的值
May 05 jQuery
jquery基于layui实现二级联动下拉选择(省份城市选择)
Jun 20 jQuery
bootstrap可编辑下拉框jquery.editable-select
Oct 12 jQuery
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
Dec 05 jQuery
jquery学习笔记之无new构建详解
Dec 07 jQuery
jquery 给动态生成的标签绑定事件的几种方法总结
Feb 24 jQuery
jQuery实现基本隐藏与显示效果的方法详解
Sep 05 jQuery
jQuery实现的点击图片居中放大缩小功能示例
Jan 16 jQuery
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
Apr 28 jQuery
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
May 13 jQuery
JQuery+drag.js上传图片并且实现图片拖曳
Nov 18 jQuery
jQuery+ajax实现文件上传功能
Dec 22 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
PHP获取url的函数代码
2011/08/02 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
jQuery 表格插件整理
2010/04/27 Javascript
js常用排序实现代码
2010/12/28 Javascript
javascript 上下banner替换具体实现
2013/11/14 Javascript
JS 日期比较大小的简单实例
2014/01/13 Javascript
jquery制作居中遮罩层效果分享
2014/02/21 Javascript
jQuery实现3D文字特效的方法
2015/03/10 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
学习使用Bootstrap输入框、导航、分页等常用组件
2017/05/11 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
Angular.js通过自定义指令directive实现滑块滑动效果
2017/10/13 Javascript
微信小程序 input输入及动态设置按钮的实现
2017/10/27 Javascript
jQuery中each方法的使用详解
2018/03/18 jQuery
详解使用element-ui table组件的筛选功能的一个小坑
2018/11/02 Javascript
如何用JavaScript实现功能齐全的单链表详解
2019/02/11 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
在Python程序中操作文件之flush()方法的使用教程
2015/05/24 Python
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
python脚本爬取字体文件的实现方法
2017/04/29 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
完美解决ARIMA模型中plot_acf画不出图的问题
2020/06/04 Python
导致python中import错误的原因是什么
2020/07/01 Python
UI自动化定位常用实现方法代码示例
2020/10/27 Python
html5 canvas实现圆形时钟代码分享
2013/12/25 HTML / CSS
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
一些网络技术方面的面试题
2014/05/01 面试题
歌唱比赛策划方案
2014/06/06 职场文书
工地质量标语
2014/06/12 职场文书
2015年行政部工作总结
2015/04/28 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
python使用torch随机初始化参数
2022/03/22 Python