Javascript 实现Base64图片下载而不是在浏览器打开

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 })
}


若有收获,就给个鼓励吧

我要:
蜀ICP备2024070963号Iwecore © 2020-2024. All Rights Reserved.