先後端分離,導出數據爲文件或下載文件,前端如何處理後端返回的數據

  在先後端分離的項目中涉及跨域問題,一般都會使用token進行驗證。前端

  最近在先後端分離的項目中在一個問題上搞了好久,就是之前下載附件或者導出數據爲文件的時候,在之前的那些項目前端能夠直接用 window.location.href='後端url',window.open(url)或者其餘的方式,可是在先後端分離中這種方式不能把token也一塊兒傳到後端進行請求,致使權限不夠訪問不了後端。json

  最後在多方面的嘗試下,也和同事一塊兒討論,最後這麼解決(直接附代碼):後端

 1  /**
 2      * 導出用戶列表
 3      */
 4     private exportUsers(){
 5         this.http.doPost({
 6             url: 'system/sysmanager/user/exportUsers', 
 7             responseType:ResponseContentType.Blob,  
 8             body:this.form,  //傳入後端的表單數據
 9             success: (req, res) => {
10                 var blob = new Blob([res.json()]); //建立一個blob對象
11                 var a = document.createElement('a'); //建立一個<a></a>標籤
12                 a.href = URL.createObjectURL(blob); // response is a blob
13                 a.download = "用戶列表.xlsx";  //文件名稱
14                 a.style.display = 'none';
15                 document.body.appendChild(a);
16                 a.click();
17                 a.remove();
18             }
19         });
20    }

開始覺得後端代碼須要更改,其實後端代碼不須要更改,輸出的是輸出流、或者字節數組前端均可以進行轉換。跨域

這個博客有點簡短,若是有什麼意見或者問題歡迎你們指教。數組

相關文章
相關標籤/搜索