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 相关文章推荐
COM中获取JavaScript数组大小的代码
Nov 22 Javascript
关于javascript中this关键字(翻译+自我理解)
Oct 20 Javascript
JavaScript window.document的属性、方法和事件小结
Oct 24 Javascript
js数组的操作详解
Mar 27 Javascript
基于KMP算法JavaScript的实现方法分析
May 03 Javascript
鼠标经过显示二级菜单js特效
Aug 13 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
Jan 23 Javascript
jQuery validate+artdialog+jquery form实现弹出表单思路详解
Apr 18 Javascript
js定义类的几种方法(推荐)
Jun 08 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
Jun 05 Javascript
简单分析js中的this的原理
Aug 31 Javascript
JavaScript原生数组函数实例汇总
Oct 14 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
用PHP实现的随机广告显示代码
2007/06/14 PHP
PHP响应post请求上传文件的方法
2015/12/17 PHP
简单谈谈php延迟静态绑定
2016/01/26 PHP
PHP无限极分类函数的实现方法详解
2017/04/15 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
jQuery 位置插件
2008/12/25 Javascript
High Performance JavaScript(高性能JavaScript)读书笔记分析
2011/05/05 Javascript
jquery实现非叠加式的搜索框提示效果
2014/01/07 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
屏蔽相应键盘按钮操作
2014/03/10 Javascript
javascript实现复制与粘贴操作实例
2014/10/16 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
JavaScript模块规范之AMD规范和CMD规范
2015/10/27 Javascript
js+html制作简单验证码
2017/02/16 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
jQuery NProgress.js加载进度插件的简单使用方法
2018/01/31 jQuery
基于Vue渲染与插件的加载顺序的问题详解
2018/03/05 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
小程序和web画三角形实现解析
2019/09/02 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
transform python环境快速配置方法
2018/09/27 Python
python 判断三个数字中的最大值实例代码
2019/07/24 Python
Python imageio读取视频并进行编解码详解
2019/12/10 Python
春节到了 教你使用python来抢票回家
2020/01/06 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
Pytorch转onnx、torchscript方式
2020/05/25 Python
简单了解Python字典copy与赋值的区别
2020/09/16 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
银行演讲稿范文
2014/01/03 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
2014年管理人员工作总结
2014/12/01 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript