UNPKG

tools-for-js

Version:

基于babel构建的JavaScript前端工具库

108 lines (105 loc) 3.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getBase64 = exports.downloadStream = exports.blobToText = void 0; /******* * @description: 将txt的blob转文本内容 * @author: 琴时 * @param {*} blob * @return {*} */ var blobToText = exports.blobToText = function blobToText(blob) { return new Promise(function (resolve, reject) { if (typeof FileReader === 'undefined') { reject(new Error('浏览器不支持FileReader对象')); return; } var reader = new FileReader(); reader.onload = function () { resolve(reader.result); }; reader.onerror = function () { reject(new Error('无法读取Blob对象')); }; if (blob.constructor !== File) { reject(new Error('该数据不是blob')); return; } reader.readAsText(blob); }); }; /******* * @description: 下载流文件 * @author: 琴时 * @param {*} stream 文件流 * @param {String} fileName 文件名 * @return {*} */ var downloadStream = exports.downloadStream = function downloadStream(stream, fileName) { try { if (typeof window === 'undefined') return; var fileTypeMime = { png: 'image/png', jpeg: 'image/jpeg', gif: 'image/gif', svg: 'image/svg+xml', tiff: 'image/tiff', doc: 'application/msword', docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', txt: 'text/plain', pdf: 'application/pdf', mp4: 'video/mp4', mp3: 'audio/mpeg', rar: 'application/x-rar-compressed', html: 'text/html', xml: 'text/xml', json: 'application/json', css: 'text/css', js: 'text/javascript', ppt: 'application/vnd.ms-powerpoint', pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation', csv: 'text/csv', xls: 'application/vnd.ms-excel', xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', zip: 'application/zip', '7z': 'application/x-7z-compressed' }; var suffix = fileName.slice(fileName.indexOf('.') + 1); //获取文件后缀 var blob = new Blob([stream], { type: fileTypeMime[suffix] }); //创建blob对象 var aLink = document.createElement('a'); //创建a标签 document.body.appendChild(aLink); //末尾添加新的子节点 aLink.style.display = 'none'; //将a标签隐藏 var blobURL = URL.createObjectURL(blob); //将blob转换成URL aLink.href = aLink.download = fileName; //配置下载文件名 aLink.click(); //自动触发点击a标签[下载文件] document.body.removeChild(aLink); //移除a标签 URL.revokeObjectURL(blobURL); // 释放blob URL地址 } catch (error) { console.log('下载异常:', error.message); } }; /******* * @description: 图片转base64 * @author: 琴时 * @param {File} fil * @return {*} */ var getBase64 = exports.getBase64 = function getBase64(file) { return new Promise(function (resolve, reject) { if (typeof FileReader === 'undefined') { reject(new Error('浏览器不支持FileReader对象')); return; } var reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function () { return resolve(reader.result); }; reader.onerror = function (error) { return reject(error); }; }); };