vue使用axios實(shí)現(xiàn)文件上傳進(jìn)度的實(shí)時更新詳解
axios 簡介
axios 是一個基于Promise 用于瀏覽器和 nodejs 的 HTTP 客戶端,它本身具有以下特征:
- 從瀏覽器中創(chuàng)建 XMLHttpRequest
- 從 node.js 發(fā)出 http 請求
- 支持 Promise API
- 攔截請求和響應(yīng)
- 轉(zhuǎn)換請求和響應(yīng)數(shù)據(jù)
- 取消請求
- 自動轉(zhuǎn)換JSON數(shù)據(jù)
- 客戶端支持防止 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()
,所以只能在每個需要發(fā)送請求的組件中即時引入。
為了解決這個問題,我們在引入 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' } }) }
更多的基礎(chǔ)知識大家可以參考這篇文章:http://www.dbjr.com.cn/article/110324.htm
vue使用axios實(shí)現(xiàn)文件上傳進(jìn)度實(shí)時更新
XHR二級增加了progress事件,我們可以據(jù)此在瀏覽器接收新數(shù)據(jù)期間添加實(shí)時數(shù)據(jù)進(jìn)度條,從而使得交互更加友好
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('上傳成功') } })
關(guān)鍵點(diǎn)在于progress事件,而axios對ajax封裝之后需要在axios的config參數(shù)里面寫好事件處理函數(shù)(具體參數(shù)寫法可查看axios文檔)
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- vue+axios實(shí)現(xiàn)文件上傳的實(shí)時進(jìn)度條
- axios進(jìn)度條onDownloadProgress函數(shù)total參數(shù)undefined解決分析
- Vue+Axios實(shí)現(xiàn)文件上傳自定義進(jìn)度條
- vue+element-ui+axios多文件上傳的實(shí)現(xiàn)并顯示整體進(jìn)度
- axios實(shí)現(xiàn)文件上傳并獲取進(jìn)度
- axios+Vue實(shí)現(xiàn)上傳文件顯示進(jìn)度功能
- 使用axios實(shí)現(xiàn)上傳圖片進(jìn)度條功能
- javascript axios 實(shí)現(xiàn)進(jìn)度監(jiān)控的示例代碼
相關(guān)文章
vue中swiper開啟loop后,點(diǎn)擊事件不響應(yīng)的解決方案
這篇文章主要介紹了vue中swiper開啟loop后,點(diǎn)擊事件不響應(yīng)的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09Vue 利用指令實(shí)現(xiàn)禁止反復(fù)發(fā)送請求的兩種方法
這篇文章主要介紹了Vue 利用指令實(shí)現(xiàn)禁止反復(fù)發(fā)送請求的兩種方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09vue如何將后臺返回的數(shù)字轉(zhuǎn)換成對應(yīng)的文字
這篇文章主要介紹了vue如何將后臺返回的數(shù)字轉(zhuǎn)換成對應(yīng)的文字,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-10-10vue + echarts實(shí)現(xiàn)中國省份地圖點(diǎn)擊聯(lián)動
這篇文章主要介紹了vue + echarts實(shí)現(xiàn)中國地圖省份點(diǎn)擊聯(lián)動,需要的朋友可以參考下2022-04-04vue2+elementUI的el-tree的選中、高亮、定位功能的實(shí)現(xiàn)
這篇文章主要介紹了vue2+elementUI的el-tree的選中、高亮、定位功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-09-09vue+j簡單的實(shí)現(xiàn)輪播效果,滾動公告,銜接
這篇文章主要介紹了vue+j簡單的實(shí)現(xiàn)輪播效果,滾動公告,銜接,文章圍繞主題的相關(guān)資料展開詳細(xì)的內(nèi)容具有一定的參考價值,需要的小伙伴可以參考一下2022-06-06vue3.0中setup中異步轉(zhuǎn)同步的實(shí)現(xiàn)
這篇文章主要介紹了vue3.0中setup中異步轉(zhuǎn)同步的實(shí)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06Nuxt.js之自動路由原理的實(shí)現(xiàn)方法
這篇文章主要介紹了Nuxt.js之自動路由原理的實(shí)現(xiàn)方法,nuxt.js會根據(jù)pages目錄結(jié)構(gòu)自動生成vue-router模塊的路由配置。非常具有實(shí)用價值,需要的朋友可以參考下2018-11-11