使用FileSaver.js把base64數(shù)據(jù)轉(zhuǎn)成表格并下載

最近公司項目有一個需求, 是按行業(yè)要求的一個“怪異”格式表格下載下來,后端通過表格設(shè)計器搞了一個模板,然后填充數(shù)據(jù), 前端通過接口獲取到返回的base64格式的數(shù)據(jù),轉(zhuǎn)成表格提供下載,就用到了這個FileSaver.js

引入 FileSaver.js

在HTML頁面引入, 我采用的是cdn引入

<script src="http://cdn.staticfile.org/FileSaver.js/1.3.8/FileSaver.min.js"></script>

把base64 轉(zhuǎn)成能下載的文件

先實現(xiàn)這個轉(zhuǎn)換方法

function b64toFile(b64Data, filename, contentType) {
    let sliceSize = 512;
    let byteCharacters = atob(b64Data);
    let byteArrays = [];

    for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
        let slice = byteCharacters.slice(offset, offset + sliceSize);
        let byteNumbers = new Array(slice.length);

        for (let i = 0; i < slice.length; i++) {
            byteNumbers[i] = slice.charCodeAt(i);
        }
        let byteArray = new Uint8Array(byteNumbers);
        byteArrays.push(byteArray);
    }

    let file = new File(byteArrays, filename, {type: contentType});
    return file;
}

轉(zhuǎn)換并下載表格數(shù)據(jù)

// base64Data 是服務(wù)器獲取到的數(shù)據(jù)
let file = b64toFile(base64Data, 'test', 'application/vnd.ms-excel;charset=utf-8');

// 利用FileSaver.js 下載文件為Excel文件
saveAs(file, "fileName.xls");

是不是so easy 呢?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,618評論 1 32
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標準。 注意:講述HT...
    kismetajun閱讀 28,755評論 1 45
  • 33、JS中的本地存儲 把一些信息存儲在當前瀏覽器指定域下的某一個地方(存儲到物理硬盤中)1、不能跨瀏覽器傳輸:在...
    萌妹撒閱讀 2,240評論 0 2
  • 從初中到大學(xué),我有整整十一本日記,回老家的時候,拿鎖打開自己的柜子,還能夠看到那些本子整齊的碼在一起。是從什么時候...
    手語心言閱讀 378評論 4 2
  • 身邊有一對讓人羨慕的情侶。男生長得特別帥,端正的五官,氣質(zhì)迷人。而小姑娘長相普通又一般。 我第一次見這個男生,是被...
    曹小力閱讀 1,203評論 2 9

友情鏈接更多精彩內(nèi)容