前端導出功能實現的兩種方式


1.點擊鏈接

數據、文件格式全部在后台封裝好,返回給前端一個鏈接,前端通過點擊鏈接自動下載,兩種方式:

1 (1)window.location.href = ‘url’
2 (2)<a href='url' download=''></a>

2.解析后台返回的文件流

這種方式就是后台將要導出的文件以文件流的方式返回給前端,前端通過blob去解析,再動態創建a標簽。

 1 // 發請求
 2 this.axios.post(url, {param: paramName}, {responseType: 'arraybuffer'}).then(res => {
 3     let content = res.data; // 文件流
 4     let blob = new Blob([content],{type: 'application/octet-stream'});
 5     let fileName = 'filename.xls';
 6     // 如果后端返回文件名
 7     // let contentDisposition = res.headers['content-disposition'];
 8     // let fileName = decodeURI(contentDisposition.split('=')[1]);
 9         if ('download' in document.createElement('a')) {  // 非IE下載
10         let link = document.createElement('a');
11         link.download = fileName;
12         link.style.display = 'none';
13         link.href = URL.createObjectURL(blob);
14         document.body.appendChild(link);
15         link.click();
16         URL.revokeObjectURL(link.href) ; // 釋放URL 對象
17         document.body.removeChild(link);
18     } else {  // IE10+下載
19       navigator.msSaveBlob(blob,fileName);
20     }
21 })

 


免責聲明!

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



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