使用axios实现上传图片进度条功能


Posted in Javascript onDecember 21, 2017

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

Features

从浏览器中创建 XMLHttpRequests

从 node.js 创建 http 请求

支持 Promise API

拦截请求和响应

转换请求数据和响应数据

取消请求

自动转换 JSON 数据

客户端支持防御 XSRF

下面给大家介绍使用axios实现上传图片进度条功能,具体内容介绍如下所示:

 在最近做的项目中,一个手机页面最多要上传几十张图片,虽然对照片做了压缩处理,不过最后还是很大,如果网卡的话,上传的时间很差,如果一直在loading的话,用户都不知道什自己上传了多少,为了更直观的展现上传的进度,最好显示进度条,和显示上传的百分比;

项目用的是vuejs框架,mint-ui做为ui框架;请求的是vue官方推荐的axios(真的很强大);在axios官方介绍了使用原生上传处理进度事件(具体参考这里,这里有中文的axios官方介绍):

onUploadProgress: function (progressEvent) {
  // 对原生进度事件的处理
 },

因为使用vuejs,对于接口的数据请求,为方便管理,需要统一的管理。如果放在每个组件里,不方便日后的维护和管理;在reqwest.js文件里,定义了一个uploadPhoto方法,该方法有三个参数,分别是参数,和两个回调函数,参数就是我们要上传图片的需要的额参数;而第一个回调函数,是获取上传进度包含的数据,第二回调是获取上传成功失败,后台返回的数据;来进行页面的下一步操作。

uploadPhoto(payload,callback1,callback2){
    axios({
      url:BASE_URL + '/handler/material/upload',
      method:'post',
      onUploadProgress:function(progressEvent){ //原生获取上传进度的事件
        if(progressEvent.lengthComputable){
          //属性lengthComputable主要表明总共需要完成的工作量和已经完成的工作是否可以被测量
          //如果lengthComputable为false,就获取不到progressEvent.total和progressEvent.loaded
          callback1(progressEvent);
        }
      },
      data:payload
    }).then(res =>{
      callback2(res.data);
    }).then(error =>{
      console.log(error)
    })
  }

使用mint-ui组件里的Progress组件,在data的方法里定义该组件里的变量precent,该变量是number类型,在定义的时候,注意; 

<mt-progress :value="precent" :bar-height="10">
   <div slot="end">{{Math.ceil(precent)}}%</div>
  </mt-progress>

把reqwest.js 这个文件import 进来,获取到uploadPhoto这个方法,根据获取上传的进度,使用$nextTick 这个属性,实时的更新的页面上。

const _this = this;
API.uploadPhoto(fd,(res) =>{
 let loaded = res.loaded,
   total = res.total;
   _this.$nextTick(() =>{
    _this.precent = (loaded/total) * 100;
   })
},(res) =>{
  if(res.code === '200'){
    MessageBox.alert('图片上传成功').then(action => {
     console.log('ok');
    });
  }
})

根据上面的方法基本实现图片的上传进度和百分比的显示,剩下的就是ui了,根据自己个性化定制来实现你那完美的需求...

总结

以上所述是小编给大家介绍的使用axios实现上传图片进度条功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
[原创]站长必须要知道的javascript广告代码
May 30 Javascript
JQuery 引发两次$(document.ready)事件
Jan 15 Javascript
JavaScript 轻松搞定快捷留言功能 只需一行代码
Apr 01 Javascript
javascript+html5实现仿flash滚动播放图片的方法
Apr 27 Javascript
动态加载js文件简单示例
Apr 21 Javascript
用JS中split方法实现彩色文字背景效果实例
Aug 24 Javascript
JavaScript中transform实现数字翻页效果
Mar 08 Javascript
vue.js删除动态绑定的radio的指定项
Jun 02 Javascript
利用 spin.js 生成等待效果(js 等待效果)
Jun 25 Javascript
React-Native左右联动List的示例代码
Sep 21 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
Feb 08 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
Sep 21 Javascript
详解使用webpack构建多页面应用
Dec 21 #Javascript
使用ajax的post同步执行(实现方法)
Dec 21 #Javascript
jQuery Validate插件ajax方式验证输入值的实例
Dec 21 #jQuery
原生js+cookie实现购物车功能的方法分析
Dec 21 #Javascript
JS实现去除数组中重复json的方法示例
Dec 21 #Javascript
解析vue中的$mount
Dec 21 #Javascript
vue中使用refs定位dom出现undefined的解决方法
Dec 21 #Javascript
You might like
用PHP实现 上一篇、下一篇的代码
2012/09/29 PHP
奉献出一个封装的curl函数 便于调用(抓数据专用)
2013/07/22 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
广泛收集的jQuery拖放插件集合
2012/04/09 Javascript
使用jQuery实现星级评分代码分享
2014/12/09 Javascript
javascript数组去重小结
2016/03/07 Javascript
JS实现鼠标移上去显示图片或微信二维码
2016/12/14 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
使用微信小程序开发弹出框应用实例详解
2018/10/18 Javascript
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
2018/11/09 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
2020/02/03 Javascript
Vue两种组件类型:递归组件和动态组件的用法
2020/08/06 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
2020/08/26 Javascript
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
2017/07/25 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
浅谈利用numpy对矩阵进行归一化处理的方法
2018/07/11 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
Django-xadmin+rule对象级权限的实现方式
2020/03/30 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
Python爬虫之Spider类用法简单介绍
2020/08/04 Python
以实惠的价格轻松租车,免费取消:Easyrentcars
2019/07/16 全球购物
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
国培计划培训感言
2014/03/11 职场文书
小学生环保演讲稿
2014/04/25 职场文书
护士医德医风自我评价
2014/09/15 职场文书
服务员态度差检讨书
2014/10/28 职场文书
2014年服务员个人工作总结
2014/12/23 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
保留意见审计报告
2015/06/05 职场文书
小学英语教学反思范文
2016/02/15 职场文书
JavaScript控制台的更多功能
2021/04/28 Javascript