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插件Echarts实现的渐变色柱状图
Mar 23 jQuery
如何编写jquery插件
Mar 29 jQuery
jQuery返回定位插件详解
May 15 jQuery
jQuery Json数据格式排版高亮插件json-viewer.js使用方法详解
Jun 12 jQuery
jQuery动画_动力节点节点Java学院整理
Jul 04 jQuery
解决jquery appaend元素中id绑定事件失效的问题
Sep 12 jQuery
jQuery结合jQuery.cookie.js插件实现换肤功能示例
Oct 14 jQuery
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
Nov 10 jQuery
jQuery实现滚动到底部时自动加载更多的方法示例
Feb 18 jQuery
JQuery中的常用事件、对象属性与使用方法分析
Dec 23 jQuery
Jquery Datatables的使用详解
Jan 30 jQuery
基于ajax及jQuery实现局部刷新过程解析
Sep 12 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四种基本排序算法示例
2015/04/09 PHP
[原创]PHP简单开启curl的方法(测试可行)
2016/01/11 PHP
PHP共享内存用法实例分析
2016/02/12 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
2019/05/06 PHP
window.location.hash 属性使用说明
2010/03/20 Javascript
jQuery中after()方法用法实例
2014/12/25 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
2015/03/01 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
初识Javascript小结
2015/07/16 Javascript
简单的js表格操作
2016/09/24 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
2016/12/23 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
2017/03/14 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
javascript实现blob加密视频源地址的方法
2019/08/08 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
如何手动实现一个 JavaScript 模块执行器
2020/10/16 Javascript
解决vue数据不实时更新的问题(数据更改了,但数据不实时更新)
2020/10/27 Javascript
[32:39]完美世界DOTA2联赛循环赛 Forest vs Inki BO2第一场 11.04
2020/11/04 DOTA
用Python遍历C盘dll文件的方法
2015/05/06 Python
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
Python编程中实现迭代器的一些技巧小结
2016/06/21 Python
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
python网络编程:socketserver的基本使用方法实例分析
2020/04/09 Python
解决python父线程关闭后子线程不关闭问题
2020/04/25 Python
python利用后缀表达式实现计算器功能
2021/02/22 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
大学生职业生涯规划范文
2013/12/31 职场文书
任命书怎么写
2014/06/04 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
Feign调用传输文件异常的解决
2021/06/24 Java/Android
详细聊聊关于Mysql联合查询的那些事儿
2021/10/24 MySQL
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers
4种方法python批量修改替换列表中元素
2022/04/07 Python
Spring Boot 实现 WebSocket
2022/04/30 Java/Android