import { Message } from "element-ui"; const file = { /** 下载文件 * @param data {blob} 文件流 * @param filename {String} 文件名称 */ downloadFileByBlob: (data, filename) => { if (!data) { return false; } if (!!window.ActiveXObject || "ActiveXObject" in window) { window.navigator.msSaveOrOpenBlob(new Blob([data]), filename); } else { const url = window.URL.createObjectURL(new Blob([data])); const link = document.createElement("a"); link.style.display = "none"; link.href = url; link.setAttribute("download", filename); document.body.appendChild(link); link.click(); document.body.removeChild(link); } }, /** 下载文件 * @param url {String} 文件下载地址 * @param filename {String} 文件名称 */ downloadFileByUrl: (url, filename) => { if (!!window.ActiveXObject || "ActiveXObject" in window) { window.navigator.msSaveOrOpenBlob(url, filename); } else { const link = document.createElement("a"); link.style.display = "none"; link.href = url; link.setAttribute("download", filename); document.body.appendChild(link); link.click(); document.body.removeChild(link); } }, dealBase64ToBlob(base64Url) { // 截取base64的数据内容(去掉前面的描述信息,类似这样的一段:data:image/png;base64,)并解码为2进制数据 let bstr = atob(base64Url.split(",")[1]); // 获取解码后的二进制数据的长度,用于后面创建二进制数据容器 let olength = bstr.length; // 创建一个Uint8Array类型的数组以存放二进制数据 var u8arr = new Uint8Array(olength); // 将二进制数据存入Uint8Array类型的数组中 while (olength--) { u8arr[olength] = bstr.charCodeAt(olength); } // 创建blob对象 let blob = new Blob([u8arr]); return blob; }, // 获取文件扩展名 getFileExtension: (fileName) => { const fileNameSplited = fileName.split("."); return fileNameSplited[fileNameSplited.length - 1].toLowerCase(); }, getFileName: (fileName) => { return filename.substring(0, filename.lastIndexOf(".")); }, }; export default file;