首頁  >  文章  >  web前端  >  在vue中使用axios實作檔案上傳

在vue中使用axios實作檔案上傳

亚连
亚连原創
2018-06-19 16:43:052199瀏覽

最近在學習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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn