• Base64转Blob下载 中文乱码


    Base64转Blob下载

    Base64转成Blob

    • Base64通过此方法转成Blob
    • dataurl有前缀,前缀可参考最下面的表格
    /**
     * @param {String} dataurl 传进来的要有文件格式 
     * @return {Blob} 返回Blob
     * */ 
    function dataURLtoBlob(dataurl) {
    	let arr = dataurl.split(","),
    		mime = arr[0].match(/:(.*?);/)[1],  //没有文件格式此处会报错
    		bstr = atob(arr[1]),
    		n = bstr.length,
    		u8arr = new Uint8Array(n);
    	while (n--) {
    		u8arr[n] = bstr.charCodeAt(n);
    	}
    	return new Blob([u8arr], {
    		type: mime
    	});
    	<!-- UTF-8 乱码可加上 -->
    	return new Blob([u8arr], {
    		type: `${mime},charset=UTF-8`
    	});
    }
    

    下载

    • 把转好的Blob以参数触发此函数下载
    /**
     * @param {Blob} blob  
     * */ 
    function down(blob) {
    	const a = document.createElement('a'); //创建a标签
    	a.setAttribute('download', ''); // 名字
    	a.setAttribute('href', window.URL.createObjectURL(blob)); // href链接
    	a.click(); // 自执行点击事件
    	document.body.appendChild(a); //插入body里
    	document.body.removeChild(a); //从body删除
    }
    

    乱码问题

    • 大多数都是格式不对
    • Base64 前缀问题(格式问题),这里是常用的格式。
    序列 前缀 适用格式
    1 data:application/pdf;base64, pdf
    2 data:image/png;base64, png
    3 data:application/x-zip-compressed;base64, zip
    4 data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64, docx
    5 data:application/json;base64, json
    6 data:application/vnd.ms-excel;base64, xls
    7 data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;base64, xlsx
    8 data:application/vnd.openxmlformats-officedocument.presentationml.presentation;base64, pptx
    9 data:text/plain;base64, txt
    10 data:application/vnd.openxmlformats-officedocument.presentationml.presentation;base64, pptx
    11 data:application/msword;base64, doc
  • 相关阅读:
    网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析
    ant例子
    poj 3744 概率dp+矩阵快速幂
    hdu 4284 状态压缩dp
    hdu 4276 树形dp
    hdu 3586 树形dp+二分
    hdu 3001 三进制状压
    hdu 1561 树形dp+分组背包
    hdu 2196 树形dp
    poj 1485 dp
  • 原文地址:https://www.cnblogs.com/ooo51o/p/16165979.html
Copyright © 2020-2023  润新知