使用axios實(shí)現(xiàn)上傳圖片進(jìn)度條功能
Axios 是一個(gè)基于 promise 的 HTTP 庫(kù),可以用在瀏覽器和 node.js 中。
Features
從瀏覽器中創(chuàng)建 XMLHttpRequests
從 node.js 創(chuàng)建 http 請(qǐng)求
支持 Promise API
攔截請(qǐng)求和響應(yīng)
轉(zhuǎn)換請(qǐng)求數(shù)據(jù)和響應(yīng)數(shù)據(jù)
取消請(qǐng)求
自動(dòng)轉(zhuǎn)換 JSON 數(shù)據(jù)
客戶(hù)端支持防御 XSRF
下面給大家介紹使用axios實(shí)現(xiàn)上傳圖片進(jìn)度條功能,具體內(nèi)容介紹如下所示:
在最近做的項(xiàng)目中,一個(gè)手機(jī)頁(yè)面最多要上傳幾十張圖片,雖然對(duì)照片做了壓縮處理,不過(guò)最后還是很大,如果網(wǎng)卡的話(huà),上傳的時(shí)間很差,如果一直在loading的話(huà),用戶(hù)都不知道什自己上傳了多少,為了更直觀的展現(xiàn)上傳的進(jìn)度,最好顯示進(jìn)度條,和顯示上傳的百分比;
項(xiàng)目用的是vuejs框架,mint-ui做為ui框架;請(qǐng)求的是vue官方推薦的axios(真的很強(qiáng)大);在axios官方介紹了使用原生上傳處理進(jìn)度事件(具體參考這里,這里有中文的axios官方介紹):
onUploadProgress: function (progressEvent) { // 對(duì)原生進(jìn)度事件的處理 },
因?yàn)槭褂胿uejs,對(duì)于接口的數(shù)據(jù)請(qǐng)求,為方便管理,需要統(tǒng)一的管理。如果放在每個(gè)組件里,不方便日后的維護(hù)和管理;在reqwest.js文件里,定義了一個(gè)uploadPhoto方法,該方法有三個(gè)參數(shù),分別是參數(shù),和兩個(gè)回調(diào)函數(shù),參數(shù)就是我們要上傳圖片的需要的額參數(shù);而第一個(gè)回調(diào)函數(shù),是獲取上傳進(jìn)度包含的數(shù)據(jù),第二回調(diào)是獲取上傳成功失敗,后臺(tái)返回的數(shù)據(jù);來(lái)進(jìn)行頁(yè)面的下一步操作。
uploadPhoto(payload,callback1,callback2){ axios({ url:BASE_URL + '/handler/material/upload', method:'post', onUploadProgress:function(progressEvent){ //原生獲取上傳進(jìn)度的事件 if(progressEvent.lengthComputable){ //屬性lengthComputable主要表明總共需要完成的工作量和已經(jīng)完成的工作是否可以被測(cè)量 //如果lengthComputable為false,就獲取不到progressEvent.total和progressEvent.loaded callback1(progressEvent); } }, data:payload }).then(res =>{ callback2(res.data); }).then(error =>{ console.log(error) }) }
使用mint-ui組件里的Progress組件,在data的方法里定義該組件里的變量precent,該變量是number類(lèi)型,在定義的時(shí)候,注意;
<mt-progress :value="precent" :bar-height="10"> <div slot="end">{{Math.ceil(precent)}}%</div> </mt-progress>
把reqwest.js 這個(gè)文件import 進(jìn)來(lái),獲取到uploadPhoto這個(gè)方法,根據(jù)獲取上傳的進(jìn)度,使用$nextTick 這個(gè)屬性,實(shí)時(shí)的更新的頁(yè)面上。
const _this = this; API.uploadPhoto(fd,(res) =>{ let loaded = res.loaded, total = res.total; _this.$nextTick(() =>{ _this.precent = (loaded/total) * 100; }) },(res) =>{ if(res.code === '200'){ MessageBox.alert('圖片上傳成功').then(action => { console.log('ok'); }); } })
根據(jù)上面的方法基本實(shí)現(xiàn)圖片的上傳進(jìn)度和百分比的顯示,剩下的就是ui了,根據(jù)自己個(gè)性化定制來(lái)實(shí)現(xiàn)你那完美的需求...
總結(jié)
以上所述是小編給大家介紹的使用axios實(shí)現(xiàn)上傳圖片進(jìn)度條功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- vue+axios實(shí)現(xiàn)文件上傳的實(shí)時(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)度功能
- vue使用axios實(shí)現(xiàn)文件上傳進(jìn)度的實(shí)時(shí)更新詳解
- javascript axios 實(shí)現(xiàn)進(jìn)度監(jiān)控的示例代碼
相關(guān)文章
JavaScript使用面向?qū)ο髮?shí)現(xiàn)的拖拽功能詳解
這篇文章主要介紹了JavaScript使用面向?qū)ο髮?shí)現(xiàn)的拖拽功能,結(jié)合實(shí)例形式詳細(xì)分析了javascript基于面向?qū)ο蟮耐献Чδ軐?shí)現(xiàn)思路、原理與具體操作技巧,需要的朋友可以參考下2019-06-06js調(diào)試工具 Javascript Debug Toolkit 2.0.0版本發(fā)布
Javascript Debug Toolkit是一個(gè)可以跨瀏覽器調(diào)試javascript的開(kāi)源項(xiàng)目,支持在IE,FIREFOX,SAFARI,CHROME等瀏覽器中調(diào)試javascript。2.0.0版本做了較大變動(dòng),增加以下功能2008-12-12JavaScript?中的單例內(nèi)置對(duì)象Global?與?Math
這篇文章主要介紹了JavaScript?中的單例內(nèi)置對(duì)象Global與Math,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07微信小程序開(kāi)發(fā)之路由切換頁(yè)面重定向問(wèn)題
這篇文章主要介紹了微信小程序開(kāi)發(fā)之路由切換頁(yè)面重定向問(wèn)題,又通過(guò)實(shí)例代碼給大家介紹了微信小程序的路由跳轉(zhuǎn)方法,需要的朋友可以參考下2018-09-09JavaScript實(shí)現(xiàn)的Tween算法及緩沖特效實(shí)例代碼
這篇文章主要介紹了JavaScript實(shí)現(xiàn)的Tween算法及緩沖特效,涉及JavaScript通過(guò)數(shù)學(xué)運(yùn)算及樣式屬性操作實(shí)現(xiàn)緩動(dòng)、彈性運(yùn)動(dòng)等效果,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11js實(shí)現(xiàn)隨機(jī)數(shù)字字母驗(yàn)證碼
這篇文章主要為大家詳細(xì)介紹了js隨機(jī)驗(yàn)證碼的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06js使用html()或text()方法獲取設(shè)置p標(biāo)簽的顯示的值
html()方法可以用來(lái)讀取或者設(shè)置某個(gè)元素中的HTML內(nèi)容,text()方法可以用來(lái)讀取或者沒(méi)置某個(gè)元素中的文本內(nèi)容2014-08-08JS實(shí)現(xiàn)可調(diào)整倒計(jì)時(shí)間代碼分享
這篇文章主要介紹了JS實(shí)現(xiàn)可調(diào)整倒計(jì)時(shí)間代碼,效果很酷炫,也很具有實(shí)用價(jià)值,感興趣的小伙伴們可以參考一下2015-08-0841個(gè)Web開(kāi)發(fā)者必須收藏的JavaScript實(shí)用技巧
41個(gè)Web開(kāi)發(fā)者必須收藏的JavaScript實(shí)用技巧,分享給大家,感興趣的小伙伴們可以參考一下2016-07-07