export default {
/**
* desc: base64对象转blob文件对象
* @param urlData :数据的base64对象
* @param type :类型 png,pdf,doc,mp3等;
* @returns {Blob}:Blob文件对象
*/
base64ToBlob (urlData, type) {
let arr = urlData.split(',');
let array = arr[0].match(/:(.*?);/);
let mime = (array && array.length > 1 ? array[1] : type) || type;
// 去掉url的头,并转化为byte
let bytes = window.atob(arr[1]);
// 处理异常,将ascii码小于0的转换为大于0
let ab = new ArrayBuffer(bytes.length);
// 生成视图(直接针对内存):8位无符号整数,长度1个字节
let ia = new Uint8Array(ab);
for (let i = 0; i < bytes.length; i++) {
ia[i] = bytes.charCodeAt(i);
}
return new Blob([ab], {
type: mime
});
},
/**
* desc: 下载导出文件
* @param blob :返回数据的blob对象或链接
* @param fileName :下载后文件名标记
* @param fileType :文件类 word(docx) excel(xlsx) ppt等
*/
downloadExportFile (blob, fileName, fileType) {
let downloadElement = document.createElement('a');
let href = blob;
if (typeof blob == 'string') {
downloadElement.target = '_blank';
} else {
href = window.URL.createObjectURL(blob); //创建下载的链接
}
downloadElement.href = href;
downloadElement.download = fileName + '.' + fileType; //下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); //触发点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
if (typeof blob != 'string') {
window.URL.revokeObjectURL(href); //释放掉blob对象
}
},
/**
* desc: base64转文件并下载
* @param base64 {String} : base64数据
* @param fileType {String} : 要导出的文件类型png,pdf,doc,mp3等
* @param fileName {String} : 文件名
*/
downloadFile (base64, fileName, fileType) {
let typeHeader = 'data:application/' + fileType + ';base64,' // 定义base64 头部文件类型
let converedBase64 = typeHeader + base64; // 拼接最终的base64
let blob = this.base64ToBlob(converedBase64, fileType) // 转成blob对象
this.downloadExportFile(blob, fileName, fileType) // 下载文件
}
}
JS BASE64 数据下载
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 最近公司项目有一个需求, 是按行业要求的一个“怪异”格式表格下载下来,后端通过表格设计器搞了一个模板,然后填充数据...
- 图片转为base64 用html2canvas截取div,里面可以包含base64的图片,最后以blob下载 欢迎...