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增删元素的代码
Feb 14 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
Feb 06 Javascript
Jquery刷新页面背景图片随机变换的实现方法
Mar 15 Javascript
单击浏览器右上角的X关闭窗口弹出提示的小例子
Jun 12 Javascript
jquery解决客户端跨域访问问题
Jan 06 Javascript
jQuery搜索同辈元素方法
Feb 10 Javascript
jQuery插件Skippr实现焦点图幻灯片特效
Apr 12 Javascript
javascript实现九宫格相加数值相等
May 28 Javascript
前端js弹出框组件使用方法
Aug 24 Javascript
angular实现IM聊天图片发送实例
May 08 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
Sep 27 Javascript
简述Vue中容易被忽视的知识点
Dec 09 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/11/16 PHP
常用PHP框架功能对照表
2014/10/23 PHP
PHP获取访问页面HTTP状态码的实现代码
2016/11/03 PHP
input的focus方法使用
2010/03/13 Javascript
Jquery Ajax请求代码(2)
2011/01/07 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
页面装载js及性能分析方法介绍
2014/03/21 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
详解javascript实现自定义事件
2016/01/19 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
JsChart组件使用详解
2018/03/04 Javascript
在vscode里使用.vue代码模板的方法
2018/04/28 Javascript
puppeteer库入门初探
2019/01/09 Javascript
javascriptvoid(0)含义以及与&quot;#&quot;的区别讲解
2019/01/19 Javascript
js实现浏览器打印功能的示例代码
2020/07/15 Javascript
python模拟表单提交登录图书馆
2018/04/27 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
TensorFlow tensor的拼接实例
2020/01/19 Python
python 一维二维插值实例
2020/04/22 Python
python中Django文件上传方法详解
2020/08/05 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
纯CSS实现预加载动画效果
2017/09/06 HTML / CSS
html5小技巧之通过document.head获取head元素
2014/06/04 HTML / CSS
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
九年级家长会邀请函
2014/01/15 职场文书
运动与健康自我评价
2015/03/09 职场文书
2015年秋季新学期寄语
2015/03/25 职场文书
公司员工辞职信范文
2015/05/12 职场文书
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
2022/08/14 Servers
xhunter1.sys可以删除嘛? win11提示xhunter1.sys驱动不兼容解决办法
2022/09/23 数码科技