最近公司項目有一個需求, 是按行業(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 呢?