Home  >  Article  >  Web Front-end  >  Use axios to upload files in vue

Use axios to upload files in vue

亚连
亚连Original
2018-06-19 16:43:052110browse

I have been learning axios recently, and then used it in the project, so this article mainly introduces you to the relevant information about using axios in vue to realize real-time update of file upload progress. The article first gives a brief introduction to axios and the method. Everyone understands learning. Friends who need it can learn together below.

axios Introduction

axios is a Promise-based HTTP client for browsers and nodejs. It has the following characteristics:

  • Create XMLHttpRequest from the browser

  • Issue an http request from node.js

  • Support Promise API

  • Interception of requests and responses

  • Convert request and response data

  • Cancel request

  • Automatically convert JSON data

  • The client supports preventing CSRF/XSRF

Introduction method:

$ npm install axios
//使用淘宝源
$ cnpm install axios
//或者使用cdn:
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

When installing other plug-ins, you can directly introduce them in main.js and use Vue.use() to register, but axios is not a vue plug-in, so you cannot use Vue.use (), so it can only be introduced immediately in each component that needs to send a request.

In order to solve this problem, after introducing axios, we modified the prototype chain to make it more convenient to use.

//main.js

import axios from &#39;axios&#39;
Vue.prototype.$http = axios

After adding these two lines of code to main.js, you can use the $http command directly in the component's methods

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

For more basic knowledge, you can refer to this article: //www.jb51.net/article/110324.htm

##vue uses axios to realize real-time update of file upload progress

The progress event has been added to the XHR level 2, whereby we can add a real-time data progress bar while the browser is receiving new data, thus making the interaction more friendly

vue template

<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;)
  }
 })

The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.

Related articles:

Is there an error when calling fs.renameSync in Node.js?

How to configure the React Native development environment in VSCode

How to install Mint-UI in vue

How to implement collection data traversal display in AngularJS

The above is the detailed content of Use axios to upload files in vue. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn