vue使用axios实现文件上传进度的实时更新详解
2017-12-20 08:35
1611 查看
axios 简介
axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征:
- 从浏览器中创建 XMLHttpRequest
- 从 node.js 发出 http 请求
- 支持 Promise API
- 拦截请求和响应
- 转换请求和响应数据
- 取消请求
- 自动转换JSON数据
- 客户端支持防止 CSRF/XSRF
引入方式:
$ npm install axios //使用淘宝源 $ cnpm install axios //或者使用cdn: <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
安装其他插件的时候,可以直接在 main.js 中引入并使用 Vue.use()来注册,但是 axios并不是vue插件,所以不能 使用
Vue.use(),所以只能在每个需要发送请求的组件中即时引入。
为了解决这个问题,我们在引入 axios 之后,通过修改原型链,来更方便的使用。
//main.js
import axios from 'axios' Vue.prototype.$http = axios
在 main.js 中添加了这两行代码之后,就能直接在组件的 methods 中使用 $http命令
methods: { postData () { this.$http({ method: 'post', url: '/user', data: { name: 'xiaoming', info: '12' } }) }
更多的基础知识大家可以参考这篇文章:https://www.geek-share.com/detail/2702292109.html
vue使用axios实现文件上传进度实时更新
XHR二级增加了progress事件,我们可以据此在浏览器接收新数据期间添加实时数据进度条,从而使得交互更加友好
vue模板
<div class="progress" @click="upload" :style="{backgroundImage:'linear-gradient(to right,#C0C7CB 0%,#C0C7CB '+progress+',#E1E6E9 '+progress+',#E1E6E9 100%)'}">
vue-js
var form = new FormData() form.append('file', vm.$refs.upload.files[0]) form.append('id', id) form.append('type', type) var config = { onUploadProgress: progressEvent => { var complete = (progressEvent.loaded / progressEvent.total * 100 | 0) + '%' this.progress = complete } } axios.post(`api/uploadFile`, form, config).then((res) => { if (res.data.status === 'success') { console.log('上传成功') } })
关键点在于progress事件,而axios对ajax封装之后需要在axios的config参数里面写好事件处理函数(具体参数写法可查看axios文档)
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章:
相关文章推荐
- 详解Vue+axios+Node+express实现文件上传(用户头像上传)
- Ext4+Servlet+HTML5实现实时获取文件上传进度、本地预览、文件拖拽上传的相册实例
- Extjs+Asp.net实现上传大文件带实时进度条
- 转:使用AjaxPro实现文件上传进度条
- Ext4+Servlet+HTML5实现实时获取文件上传进度、本地预览、文件拖拽上传的相册实例
- 使用struts2和AJAX实现文件上传并显示进度条
- 使用cos实现多个文件上传详解
- Android网络编程之使用HttpClient批量上传文件(二)AsyncTask+HttpClient并实现上传进度监听
- Android使用HttpClient实现文件上传到PHP服务器,并监控进度条
- html 使用Ajax 实现多文件上传,并显示进度
- 使用Ext js和SwfUpload实现批量文件上传(有上传进度条)
- php使用APC实现实时上传进度条功能
- 【分享】 在silverlight中使用wcf上传文件并实时显示进度
- php使用APC实现实时上传进度条功能
- PHP中使用Session配合Javascript实现文件上传进度条功能
- 使用struts2和AJAX实现文件上传并显示进度条
- [C#]实现文件复制[更新]实时显示进度条
- 通过终端命令行进行WebDav服务器配置,实现使用PUT进行文件上传【图文详解】
- 摘抄--使用cos实现多个文件上传详解
- 使用 APC 为 php 5.2.0 文件上传实现进度条