jQuery监听文件上传实现进度条效果的方法


Posted in Javascript onOctober 16, 2016

原理:

给XMLHttpRequest对象的upload属性绑定onprogress方法监听上传过程

var xhr=new XMLHttpRequest(); xhr.upload.onprogress=function(e){}

因为jQuery默认使用的XMLHttpRequest对象是内部生成的无法直接给jq的xhr绑定onprogress方法

所以只要给jQuery重新生成一个绑定了onprogress的XMLHttpRequest对象即可实现

首先封装一个方法 传入一个监听函数 返回一个绑定了监听函数的XMLHttpRequest对象

var xhrOnProgress=function(fun) {
  xhrOnProgress.onprogress = fun; //绑定监听
  //使用闭包实现监听绑
  return function() {
    //通过$.ajaxSettings.xhr();获得XMLHttpRequest对象
    var xhr = $.ajaxSettings.xhr();
    //判断监听函数是否为函数
    if (typeof xhrOnProgress.onprogress !== 'function')
      return xhr;
    //如果有监听函数并且xhr对象支持绑定时就把监听函数绑定上去
    if (xhrOnProgress.onprogress && xhr.upload) {
      xhr.upload.onprogress = xhrOnProgress.onprogress;
    }
    return xhr;
  }
}

上传时使用$.ajax方法

$.ajax({
  url: url,
  type: 'POST',
  xhr:xhrOnProgress(function(e){
    var percent=e.loaded / e.total;//计算百分比
  })
});

使用HW.js文件上传工具 自带进度条效果 支持绑定自定义监听函数,支持上传实时预览(HTML5实现 无需服务器)HW.js

<div id="cover" class="HW_upload">请选择要上传的文件</div>
<script>
var upload= new HW.Widget.upload.Create({
  target:'#cover',//指定上传控件
  url:"/upload.php",//上传地址
  //设置允许上传的文件大小 单位为kb 默认为 4096
  maxSize:2048,
  //开启多文件上传
  mult:false,
  //设置上传按钮的文字
  uploadText:'请选择要上传的文件',
  //设置上传超时限制 单位为分钟 默认为20分钟
  timeout:20,
  //设置允许上传的文件类型 默认为['png','jpg','jpeg']
  // accept:['jpg'],
  //设置文件上传参数名 默认为HW_upload_input
  inputName:'cover',
  //设置控件为图片上传 默认为true 为false时则不开启文件预览
  isImage:true,
  //自定义文件检查函数 默认检测文件大小 类型
  // fileCheck:function(file){return true;},
  viewSize:[500,300],//设置图片预览框宽高 默认为400,300
  viewImageWidth:70,//设置预览图片宽度默认为80
  done:function(data){
    alert(data);//获得上传结束后服务器返回的数据
  }
});

以上就是小编为大家带来的jQuery监听文件上传实现进度条效果的方法全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
Feb 15 Javascript
jquery简单瀑布流实现原理及ie8下测试代码
Jan 23 Javascript
写JQuery插件的基本知识
Nov 25 Javascript
node.js中的fs.readSync方法使用说明
Dec 17 Javascript
javascript实现可全选、反选及删除表格的方法
May 15 Javascript
JavaScript运动减速效果实例分析
Aug 04 Javascript
整理Javascript数组学习笔记
Nov 29 Javascript
AngularJS使用ng-options指令实现下拉框
Aug 23 Javascript
jQuery 添加样式属性的优先级别方法(推荐)
Jun 08 jQuery
vue实现全匹配搜索列表内容
Sep 26 Javascript
js实现简单的点名器随机色实例代码
Sep 20 Javascript
基于js实现的图片拖拽排序源码实例
Nov 04 Javascript
浅谈js对象的创建和对6种继承模式的理解和遐想
Oct 16 #Javascript
利用jQuery对无序列表排序的简单方法
Oct 16 #Javascript
JS实现动态增加和删除li标签行的实例代码
Oct 16 #Javascript
js利用appendChild对标签进行排序的实现方法
Oct 16 #Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
Oct 16 #Javascript
JS实现禁止鼠标右键的功能
Oct 15 #Javascript
Vue.js快速入门实例教程
Oct 15 #Javascript
You might like
一个域名查询的程序
2006/10/09 PHP
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
2006/10/09 PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
2014/06/12 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
joomla组件开发入门教程
2016/05/04 PHP
yii通过小物件生成view的方法
2016/10/08 PHP
一端时间轮换的广告
2006/06/26 Javascript
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
JS 常用校验函数
2009/03/26 Javascript
用按钮控制iframe显示的网页实现方法
2013/02/04 Javascript
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
浅谈 javascript 事件处理
2015/01/04 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
详解Node.js如何开发命令行工具
2016/08/14 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
React/Redux应用使用Async/Await的方法
2017/11/16 Javascript
Jquery和CSS实现选择框重置按钮功能
2018/11/08 jQuery
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
VUE 动态组件的应用案例分析
2019/12/02 Javascript
Vue实现购物车基本功能
2020/11/08 Javascript
深入理解Python中的元类(metaclass)
2015/02/14 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
Python方法的延迟加载的示例代码
2017/12/18 Python
Python设计模式之解释器模式原理与用法实例分析
2019/01/10 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
阿迪达斯荷兰官方网站:adidas荷兰
2018/03/16 全球购物
竟聘演讲稿范文
2013/12/31 职场文书
安全生产检查通报
2014/01/29 职场文书
挂职自我鉴定
2014/02/26 职场文书
通信工程专业求职信
2014/06/04 职场文书
本科毕业生应聘自荐信范文
2014/06/26 职场文书
委托函范文
2015/01/29 职场文书
保研推荐信格式
2015/03/25 职场文书
选购到合适的激光打印机
2022/04/21 数码科技