SOURCE

function download(fileName,blob){
    if ("download" in document.createElement("a")) {
        //支持a标签download的浏览器
        const link = document.createElement("a"); //创建a标签
        link.download = fileName; //a标签添加属性
        link.style.display = "none";
        link.href = URL.createObjectURL(blob);
        document.body.appendChild(link);
        link.click(); //执行下载
        URL.revokeObjectURL(link.href); //释放url
        document.body.removeChild(link); //释放标签
    } else {
        //其他浏览器
        navigator.msSaveBlob(blob, fileName);
    }
}
function base64ToFile(url, fileName){
    let arr = url.split(','),
    mime = arr[0].match(/:(.*?);/),
    bstr = atob(arr[1]),
    n = bstr.length,
    u8arr = new Uint8Array(n);

    while (n--) {
    	u8arr[n] = bstr.charCodeAt(n);
    }

    return new File([u8arr], fileName, { type: mime });
};

function blobToDataURI(blob, callback) {
   var reader = new FileReader();
   reader.readAsDataURL(blob);
   reader.onload = function (e) {
       callback(e.target.result);
   }
}

var str="afdsfdsanfdgsijgi";

console.log(str.length/30);
str=Array(Math.ceil(str.length/30))
.fill(null).map((o,i)=>(str.substr(i,30*(i+1))));
console.log(str);
console 命令行工具 X clear

                    
>
console