tools-for-js
Version:
基于babel构建的JavaScript前端工具库
108 lines (105 loc) • 3.38 kB
JavaScript
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);
};
});
};
;