欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue中axios利用blob實現(xiàn)文件瀏覽器下載方式

 更新時間:2024年05月29日 09:42:45   作者:myl0808  
這篇文章主要介紹了vue中axios利用blob實現(xiàn)文件瀏覽器下載方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

vue axios利用blob實現(xiàn)文件瀏覽器下載

在vue中,使用axios向后臺請求數(shù)據(jù),但只接收返回的response并不能實現(xiàn)瀏覽器下載,所以需要借助于blob實現(xiàn)文件的瀏覽器下載,分為兩種情況,一種是get請求,使用params,另一種使用post請求,參數(shù)使用formdata傳參

情景1:get請求,params傳參

url與參數(shù)部分代碼:

this.axios.get('/api/downloadConfig', {
   params:{oid:oid},
   responseType:'blob',
 })

blob具體下載實現(xiàn)代碼

 if(res.status === 200){
  const content = res.data;
  const blob = new Blob([content]);
  if('download' in document.createElement('a')){
    //非IE下載
    const a = document.createElement('a');
    a.download = fileName;
    a.style.display = 'none';
    a.href = window.URL.createObjectURL(blob);
    document.body.appendChild(a);
    a.click();
    window.URL.revokeObjectURL(a.href);
    document.body.removeChild(a);
  }else{
    //IE10+下載
    if(typeof window.navigator.msSaveBlob !== 'undefined'){
      window.navigator.msSaveBlob(blob, _this.selected);
    }else{
      let URL = window.URL || window.webkitURL;
      let downloadUrl = URL.createObjectURL(blob);
      window.location = downloadUrl;
  }
 }

情景2:post請求,formdata傳參

url與參數(shù)部分代碼:

this.axios.post('/api/downloadConfig', form, {responseType:'blob'})

blob具體下載實現(xiàn)代碼與上文get請求一致

vue axios實現(xiàn)下載文件及responseType:blob注意事項

需要使用axios和js-file-download組件

npm install js-file-download --save
npm install axios --save
import fileDownload from 'fileDownload'; // 引入fileDownload
import axios from 'axios'; // 引入axios 
 
axios({
    method: 'get',
    url: 'xxxxxxx',
    responseType: 'blob'
}).then(res => {
    if(res.status == 200){
      // res.headers['content-disposition'].substring(20)表示從響應(yīng)頭中獲取文件名
      fileDownload(res.data,res.headers['content-disposition'].substring(20));
    }else { // 下載文件失敗,解析json格式信息
      let that = this;
      var fileReader = new FileReader();
      fileReader.readAsText(res.data); // 按字節(jié)讀取文件內(nèi)容,結(jié)果為文件的二進制串
      fileReader.onload = ()=>{
          that.$notify.error(fileReader.result);
      }
    } 
})

注意事項:

responseType:blob表示服務(wù)器返回的響應(yīng)類型是二進制流,一般用于文件、視頻下載等場景。

正常情況下后端返回二進制數(shù)據(jù),當后端服務(wù)器出錯時,往往會以json形式返回錯誤信息,例如{"code":500,"msg":"未知異常"}。

因為設(shè)置了blob類型,axios會強制把數(shù)據(jù)轉(zhuǎn)為blob,導(dǎo)致json格式的響應(yīng)沒辦法正常解析,需要使用FileReader對象來處理,F(xiàn)ileReader是一種異步讀取文件機制。

FileReader提供了如下方法,大家根據(jù)需要自行選擇。

  • readAsArrayBuffer(file):按字節(jié)讀取文件內(nèi)容,結(jié)果用ArrayBuffer對象表示
  • readAsBinaryString(file):按字節(jié)讀取文件內(nèi)容,結(jié)果為文件的二進制串
  • readAsDataURL(file):讀取文件內(nèi)容,結(jié)果用data:url的字符串形式表示
  • readAsText(file,encoding):按字符讀取文件內(nèi)容,結(jié)果用字符串形式表示

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue.config.js中配置分包策略及常見的配置選項

    vue.config.js中配置分包策略及常見的配置選項

    在Vue.js中分包(Code Splitting)是一種將應(yīng)用程序代碼拆分為不同的塊或包的技術(shù),從而在需要時按需加載這些包,下面這篇文章主要給大家介紹了關(guān)于vue.config.js中配置分包策略及常見的配置選項的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • Vue項目如何安裝引入使用Vant

    Vue項目如何安裝引入使用Vant

    Vant是一個專為移動端設(shè)計的輕量級組件庫,自2017年開源以來,提供了Vue2、Vue3及多平臺版本支持,安裝Vant時需要注意版本兼容問題,Vue3項目應(yīng)安裝最新版Vant3,而Vue2項目則需安裝Vant2,安裝錯誤時,需卸載后重新安裝正確版本
    2024-10-10
  • Vuex實現(xiàn)記事本功能

    Vuex實現(xiàn)記事本功能

    這篇文章主要為大家詳細介紹了Vuex實現(xiàn)記事本功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • vue 子組件向父組件傳值方法

    vue 子組件向父組件傳值方法

    下面小編就為大家分享一篇vue 子組件向父組件傳值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • 通用vue組件化登錄頁面實例代碼

    通用vue組件化登錄頁面實例代碼

    這篇文章主要給大家介紹了關(guān)于通用vue組件化登錄頁面的相關(guān)資料,文中通過圖文以及實例代碼將解決的辦法介紹的非常詳細,對大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-08-08
  • vue.js el-tooltip根據(jù)文字長度控制是否提示toolTip問題

    vue.js el-tooltip根據(jù)文字長度控制是否提示toolTip問題

    這篇文章主要介紹了vue.js el-tooltip根據(jù)文字長度控制是否提示toolTip問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Vue中watch與watchEffect的區(qū)別詳細解讀

    Vue中watch與watchEffect的區(qū)別詳細解讀

    這篇文章主要介紹了Vue中watch與watchEffect的區(qū)別詳細解讀,watch函數(shù)與watchEffect函數(shù)都是監(jiān)聽器,在寫法和用法上有一定區(qū)別,是同一功能的兩種不同形態(tài),底層都是一樣的,需要的朋友可以參考下
    2023-11-11
  • 解析Vue2 dist 目錄下各個文件的區(qū)別

    解析Vue2 dist 目錄下各個文件的區(qū)別

    本篇文章主要介紹了解析Vue2 dist 目錄下各個文件的區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Vue-router編程式導(dǎo)航的兩種實現(xiàn)代碼

    Vue-router編程式導(dǎo)航的兩種實現(xiàn)代碼

    這篇文章主要介紹了Vue-router編程式導(dǎo)航的實現(xiàn)代碼,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • element滾動條組件el-scrollbar的使用詳解

    element滾動條組件el-scrollbar的使用詳解

    本文主要介紹了element滾動條組件el-scrollbar的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04

最新評論