| | |
| | | return fileName; |
| | | }); |
| | | } |
| | | |
| | | export function downloadBase64File(base64Data: string, filename: string) { |
| | | // 将base64数据分割,获取mime-type |
| | | const [, mime, b64data] = base64Data.match(/^data:([^;]+);base64,(.+)$/); |
| | | |
| | | // 解码base64数据 |
| | | const byteString = atob(b64data); |
| | | const arrayBuffer = new ArrayBuffer(byteString.length); |
| | | const intArray = new Uint8Array(arrayBuffer); |
| | | |
| | | for (let i = 0; i < byteString.length; i++) { |
| | | intArray[i] = byteString.charCodeAt(i); |
| | | } |
| | | |
| | | // 创建Blob对象 |
| | | const blob = new Blob([intArray], { type: mime }); |
| | | |
| | | //@ts-ignore |
| | | if (typeof navigator !== 'undefined' && navigator.msSaveOrOpenBlob) { |
| | | //@ts-ignore 兼容IE |
| | | navigator.msSaveOrOpenBlob(blob, filename); |
| | | } else { |
| | | // 创建一个临时的a标签用于触发下载 |
| | | const a = document.createElement('a'); |
| | | const url = window.URL.createObjectURL(blob); |
| | | a.href = url; |
| | | a.download = filename; // 设置下载后的文件名 |
| | | document.body.appendChild(a); |
| | | a.click(); // 触发下载 |
| | | document.body.removeChild(a); |
| | | setTimeout(() => { |
| | | window.URL.revokeObjectURL(url); // 清除创建的对象URL |
| | | }, 0); |
| | | } |
| | | } |