2025.01.01 16:30
最近项目中遇到需要下载二维码图片,开始用的时候总是在浏览器中直接打开图片,没有下载到本地,查了一些资料,终于完成了下载,记录一下下次好用。
// 下载二维码
const downQr = (s, n) => {
//s base64图片地址 n 图片名称
let blob = dataURLtoBlob(s)
let url = {
name: n,
src: blob
}
if(window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(url.src, url.name)
} else {
let link = document.createElement('a')
link.setAttribute('href', window.URL.createObjectURL(url.src))
link.setAttribute('download', url.name + '.png')
document.body.appendChild(link)
link.click()
}
}
// 转成Blob
const dataURLtoBlob = (d) => {
let arr = d.split(','), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1])
let n = bstr.length, u8arr = new Uint8Array(n)
while(n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new Blob([u8arr], { type: mime })
}