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下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
Oct 20 Javascript
jQuery获取当前对象标签名称的方法
Feb 07 Javascript
JS截取url中问号后面参数的值信息
Apr 29 Javascript
require.js+vue开发微信上传图片组件
Oct 27 Javascript
深入理解Node.js中的进程管理
Mar 13 Javascript
微信小程序中的onLoad详解及简单实例
Apr 05 Javascript
JavaScript设置名字输入不合法的实现方法
May 23 Javascript
JavaScript中防止微信浏览器被整体拖动的方法
Aug 25 Javascript
JS运动特效之同时运动实现方法分析
Jan 24 Javascript
vue+Element-ui实现分页效果实例代码详解
Dec 10 Javascript
小程序跳转到的H5页面再跳转回跳小程序的方法
Mar 06 Javascript
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 Vue.js
浅谈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
关于session在PHP5的配置文件中的详细设置参数说明
2011/04/20 PHP
php常用的url处理函数总结
2014/11/19 PHP
php使用PDO操作MySQL数据库实例
2014/12/30 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
2020/01/04 PHP
两种WEB下的模态对话框 (asp.net或js的分别实现)
2009/12/02 Javascript
Bootstrap滚动监听(Scrollspy)插件详解
2016/04/26 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
JavaScript中${pageContext.request.contextPath}取值问题及解决方案
2016/12/08 Javascript
JS表单数据验证的正则表达式(常用)
2017/02/18 Javascript
在vue中通过axios异步使用echarts的方法
2018/01/13 Javascript
微信小程序实现弹出层效果
2020/05/26 Javascript
详解微信小程序回到顶部的两种方式
2019/05/09 Javascript
React优化子组件render的使用
2019/05/12 Javascript
layui之数据表格--与后台交互获取数据的方法
2019/09/29 Javascript
python调用cmd命令行制作刷博器
2014/01/13 Python
Python函数嵌套实例
2014/09/23 Python
用Python编写简单的定时器的方法
2015/05/02 Python
Python网络编程详解
2017/10/31 Python
python3 图片referer防盗链的实现方法
2018/03/12 Python
python批量图片处理简单示例
2019/08/06 Python
python打印n位数“水仙花数”(实例代码)
2019/12/25 Python
Python中包的用法及安装
2020/02/11 Python
Python序列化pickle模块使用详解
2020/03/05 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
学校安全工作制度
2014/01/19 职场文书
挖掘机司机岗位职责
2014/02/12 职场文书
军训教官感言
2014/03/02 职场文书
党支部承诺书范文
2014/03/28 职场文书
人事任命书怎么写
2014/06/05 职场文书
旷课检讨书范文
2015/01/27 职场文书
创建文明城市倡议书
2015/04/28 职场文书
用电申请报告范文
2015/05/18 职场文书
导游词之山西-五老峰
2019/10/07 职场文书
Python装饰器的练习题
2021/11/23 Python