首頁 > web前端 > js教程 > 主體

使用axios如何實現上傳圖片帶有進度條功能

亚连
發布: 2018-06-19 11:55:40
原創
2016 人瀏覽過

Axios 是一個基於 promise 的 HTTP 函式庫,可以用在瀏覽器和 node.js 中。這篇文章主要介紹了使用axios實作上傳圖片進度條,需要的朋友可以參考下

Axios 是一個基於 promise 的 HTTP 庫,可以用在瀏覽器和 node.js 中。

Features

從瀏覽器建立XMLHttpRequests

從node.js 建立http 請求

支援Promise API

#攔截請求和回應

轉換請求資料和回應資料

取消請求

#自動轉換JSON 資料

客戶端支援防禦XSRF

以下跟大家介紹使用axios實作上傳圖片進度條功能,具體內容介紹如下所示:

 在最近做的專案中,一個手機頁面最多要上傳幾十張圖片,雖然對照片做了壓縮處理,不過最後還是很大,如果網卡的話,上傳的時間很差,如果一直在loading的話,用戶都不知道什自己上傳了多少,為了更直觀的展現上傳的進度,最好顯示進度條,和顯示上傳的百分比;

  項目用的是vuejs框架,mint-ui做為ui框架;請求的是vue官方推薦的axios (真的很強大);在axios官方介紹了使用原生上傳處理進度事件(具體參考這裡,這裡有中文的axios官方介紹):

 onUploadProgress: function (progressEvent) {
  // 对原生进度事件的处理
 },
登入後複製

  因為使用vuejs,對於接口的數據請求,為方便管理,需要統一的管理。如果放在每個元件裡,不方便日後的維護和管理;在reqwest.js檔案裡,定義了一個uploadPhoto方法,該方法有三個參數,分別是參數,和兩個回呼函數,參數就是我們要上傳圖片的需要的額參數;而第一個回呼函數,是獲取上傳進度包含的數據,第二回調是獲取上傳成功失敗,後台返回的數據;來進行頁面的下一步操作。

 uploadPhoto(payload,callback1,callback2){
    axios({
      url:BASE_URL + '/handler/material/upload',
      method:'post',
      onUploadProgress:function(progressEvent){ //原生获取上传进度的事件
        if(progressEvent.lengthComputable){
          //属性lengthComputable主要表明总共需要完成的工作量和已经完成的工作是否可以被测量
          //如果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類型,在定義的時候,注意; 

<mt-progress :value="precent" :bar-height="10">
   <p slot="end">{{Math.ceil(precent)}}%</p>
  </mt-progress>
登入後複製

把reqwest.js 這個檔案import 進來,取得到uploadPhoto這個方法,根據取得上傳的進度,使用$nextTick 這個屬性,即時的更新的頁面上。

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 === &#39;200&#39;){
    MessageBox.alert(&#39;图片上传成功&#39;).then(action => {
     console.log(&#39;ok&#39;);
    });
  }
})
登入後複製

根據上面的方法基本上實現圖片的上傳進度和百分比的顯示,剩下的就是ui了,根據自己個性化定制來實現你那完美的需求...

#上面是我整理給大家的,希望未來對大家有幫助。

相關文章:

在ionic3中如何實作隨機佈局瀑布流

在React專案中如何使用Redux(詳細教學)

在JavaScript中如何實現數值自動增加

#使用Swiper如何實作分頁器使用

在Vue元件通訊中如何使用Bus

在Angular中如何實作敏感文字提示

在Angular中如何實作隱藏顯示

以上是使用axios如何實現上傳圖片帶有進度條功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板