request .get("/operate-benchmarking/benchmarking/getReportTb2", { params: { reportName: reportName, }, // responseType: "blob", }) .then((res) => { console.log(res.data); // --------------下面的代码是下载--start----------------- // // 假设 base64String 是您提供的Base64编码的Excel文件内容 // // const base64String = "UEsDBBQACAgIAPtcrlg..."; // 替换为您的Base64字符串 // const base64String = res.data; // 替换为您的Base64字符串 // // 将Base64字符串解码为Blob对象 // function base64toBlob(base64Data, contentType) { // contentType = contentType || ""; // const sliceSize = 1024; // const byteCharacters = atob(base64Data); // const byteArrays = []; // for ( // let offset = 0; // offset < byteCharacters.length; // offset += sliceSize // ) { // const slice = byteCharacters.slice(offset, offset + sliceSize); // const byteNumbers = new Array(slice.length); // for (let i = 0; i < slice.length; i++) { // byteNumbers[i] = slice.charCodeAt(i); // } // const byteArray = new Uint8Array(byteNumbers); // byteArrays.push(byteArray); // } // const blob = new Blob(byteArrays, { type: contentType }); // return blob; // } // // 调用函数并设置文件类型为application/vnd.openxmlformats-officedocument.spreadsheetml.sheet(Excel的OOXML格式) // const blob = base64toBlob( // base64String, // "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" // ); // // 创建一个下载链接 // const url = window.URL.createObjectURL(blob); // const link = document.createElement("a"); // link.href = url; // link.setAttribute("download", "myfile.xlsx"); // 设置下载的文件名 // document.body.appendChild(link); // // 触发下载 // link.click(); // // 清理 // window.URL.revokeObjectURL(url); // document.body.removeChild(link); // --------------上面的代码是下载--end----------------- // 返回 });
const loadExcel = (excelBase64) => { // 将Base64编码转换为Blob对象 const byteCharacters = atob(excelBase64); const byteArrays = []; for (let offset = 0; offset < byteCharacters.length; offset += 1024) { const slice = byteCharacters.slice(offset, offset + 1024); const byteNumbers = new Array(slice.length); for (let i = 0; i < slice.length; i++) { byteNumbers[i] = slice.charCodeAt(i); } const byteArray = new Uint8Array(byteNumbers); byteArrays.push(byteArray); } const blob = new Blob(byteArrays, { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", }); // 创建Blob URL并赋值给excelUrl excelUrl.value = URL.createObjectURL(blob); };
标签:文件,byteArrays,slice,const,处理,blob,offset,new From: https://www.cnblogs.com/LFxanla/p/18254843