首页 > web前端 > js教程 > 在vue中使用axios实现文件上传

在vue中使用axios实现文件上传

亚连
发布: 2018-06-19 16:43:05
原创
2228 人浏览过

最近在学习axios,然后项目就用到了,所以这篇文章主要给大家介绍了关于vue中利用axios实现文件上传进度的实时更新的相关资料,文中先对axios进行了简单的介绍,方法大家理解学习,需要的朋友们下面一起学习学习吧。

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 &#39;axios&#39;
Vue.prototype.$http = axios
登录后复制

在 main.js 中添加了这两行代码之后,就能直接在组件的 methods 中使用 $http命令

methods: {
postData () {
this.$http({
method: &#39;post&#39;,
url: &#39;/user&#39;,
data: {
name: &#39;xiaoming&#39;,
info: &#39;12&#39;
}
})
}
登录后复制

更多的基础知识大家可以参考这篇文章://www.jb51.net/article/110324.htm

vue使用axios实现文件上传进度实时更新

XHR二级增加了progress事件,我们可以据此在浏览器接收新数据期间添加实时数据进度条,从而使得交互更加友好

vue模板

<p class="progress" @click="upload"
   :style="{backgroundImage:&#39;linear-gradient(to right,#C0C7CB 0%,#C0C7CB &#39;+progress+&#39;,#E1E6E9 &#39;+progress+&#39;,#E1E6E9 100%)&#39;}">
登录后复制

vue-js

 var form = new FormData()
 form.append(&#39;file&#39;, vm.$refs.upload.files[0])
 form.append(&#39;id&#39;, id)
 form.append(&#39;type&#39;, type)
 var config = {
  onUploadProgress: progressEvent => {
   var complete = (progressEvent.loaded / progressEvent.total * 100 | 0) + &#39;%&#39;
   this.progress = complete
  }
 }
 axios.post(`api/uploadFile`,
  form, config).then((res) => {
  if (res.data.status === &#39;success&#39;) {
   console.log(&#39;上传成功&#39;)
  }
 })
登录后复制

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在Node.js中调用fs.renameSync出现报错问题?

在VSCode中如何配置React Native开发环境

在vue中如何安装Mint-UI

在AngularJS中如何实现集合数据遍历显示

以上是在vue中使用axios实现文件上传的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板