Front-end base64 to Blob, Blob to file download

base64 to Blob

 dataURLtoBlob = (dataurl) => {
    
    
        try {
    
    
            let arr = dataurl.split(',');
            let mime = arr[0].match(/:(.*?);/)[1];
            let bstr = atob(arr[1]);
            let n = bstr.length;
            let u8arr = new Uint8Array(n);

            while (n--) {
    
    
                u8arr[n] = bstr.charCodeAt(n);
            }
            return new Blob([u8arr], {
    
     type: mime });
        } catch{
    
    
            let arr = dataurl.split(',');
            // let mime = arr[0].match(/:(.*?);/)[1];
            let bstr = atob(arr[0]);
            let n = bstr.length;
            let u8arr = new Uint8Array(n);

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

Blob to file download

res.data.fileName: the file name brought by the backend;
res.data.data base64 string;

		   var eleLink = document.createElement("a");
            eleLink.download = res.data.fileName;
            eleLink.style.display = "none";
            // 字符内容转变成blob地址
            var blob = new Blob([this.dataURLtoBlob(res.data.data)]);
            eleLink.href = URL.createObjectURL(blob);
            // 触发点击
            document.body.appendChild(eleLink);
            eleLink.click();
            // 然后移除
            document.body.removeChild(eleLink);

Guess you like

Origin blog.csdn.net/qq_43291759/article/details/123395425