使用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 相关文章推荐
jQuery对象和DOM对象相互转化
Apr 24 Javascript
jquery得到font-size属性值实现代码
Sep 30 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
Jun 20 Javascript
JavaScript中的原型prototype属性使用详解
Jun 05 Javascript
详解通过JSON数据使用VUE.JS
May 26 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
Aug 17 jQuery
基于bootstrap写的一点localStorage本地储存
Nov 21 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
Mar 27 Javascript
Puppet的一些技巧
Sep 17 Javascript
JavaScript中的一些实用小技巧总结
Apr 07 Javascript
vue实现动态按钮功能
May 13 Javascript
angular共享依赖的解决方案分享
Oct 15 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&amp;java(二)
2006/10/09 PHP
解析thinkphp的左右值无限分类
2013/06/20 PHP
php实现过滤表单提交中html标签的方法
2014/10/17 PHP
CI框架使用composer安装的依赖包步骤与方法分析
2016/11/21 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
Javascript Tab 导航插件 (23个)
2009/06/11 Javascript
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
javascript中处理时间戳为日期格式的方法
2014/01/02 Javascript
jQuery中removeAttr()方法用法实例
2015/01/05 Javascript
详解JavaScript中的客户端消息框架设计原理
2015/06/24 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
2017/11/20 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
2017/12/14 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
Vue中 v-if/v-show/插值表达式导致闪现的原因及解决办法
2018/10/12 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
Javascript实现单选框效果
2020/12/09 Javascript
详解Python各大聊天系统的屏蔽脏话功能原理
2016/12/01 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
Python实现图片转字符画的示例
2017/08/22 Python
pyqt5中QThread在使用时出现重复emit的实例
2019/06/21 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
大学生个人总结的自我评价
2013/10/05 职场文书
清明节网上祭英烈活动总结
2014/04/30 职场文书
孝老爱亲模范事迹材料
2014/05/25 职场文书
铣床操作工岗位职责
2014/06/13 职场文书
小学生通知书评语
2014/12/31 职场文书
2015教师年度考核评语
2015/03/25 职场文书
房地产公司财务总监岗位职责
2015/04/03 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
2016年教师节慰问信
2015/12/01 职场文书
Node实现搜索框进行模糊查询
2021/06/28 Javascript
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python