vue 怎么接收后端傳過來的 excel文件流


vue 怎么接收后端傳過來的 excel文件流

1.首先需要修改接口的的發送方式

 'responseType': "arraybuffer" 

 

2.在公共js里新建一個方法

 1 import {  parseTime} from './index';  // 這是是一個格式化時間的方法。可以刪除
 2 export function export_excel_file(export_data, list_name) {
 3   let link = document.createElement("a");
 4   //    type就是blob的type,是MIME類型的,可以自己查看MIME類型都有哪些
 5   let blogw = new Blob([export_data], {
 6     type: "application/vnd.ms-excel;charset=utf-8"
 7   })
 8   let objectUrl = window.URL.createObjectURL(blogw); //創建一個新的url對象
 9   link.href = objectUrl;
10   let file_name = `${parseTime(new Date())}的${list_name}列表.xlsx`; // 文件名的輸出方式,隨意就好
12   link.download = file_name; //  下載的時候自定義的文件名
13   link.click();
14   window.URL.revokeObjectURL(objectUrl); //為了更好地性能和內存使用狀況,應該在適當的時候釋放url.
15 
16 }

 

3.調用接口時,直接把文檔流數據放到方法 里

 import { export_excel_file } from '@/utils/export'; 

    

// 導出按鈕
    exportBtn() {if (this.multipleSelection.length) {
        importTrace({
          list: this.multipleSelection, // 傳入數組
        })
          .then((res) => {
            export_excel_file(res, '文件名 ');
            this.$message.success('導出成功');
          })
          .catch(() => {this.$message.error('導出失敗,請稍后再試');
          });
      } else {
        this.$message.warning('請選擇需要導出數據');
      }
    },

 

如有響應攔截器的情況:

后端是用流的形式,所以返回前端沒有 code ,會被響應攔截器攔截。能不能給這個接口設置白名單呢?(能不能放行這個響應呢?)

 

查看上面的圖1,由於我們修改了接口的接口方式,我們發送的方式就會方式改變。

 

 

我們可以看到 response 的 config 里有不一樣的發送方式,我們只要判斷這個響應方式即可。

 

 

以上是全部內容。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM