在实际开发过程中,Base64 经常会用于处理图片的预览、上传、下载等。
FileReader.readAsDataURL()
触发 loaded
,并在回调中获取到 data:URL
convertBase64ImageData()
解析 data:URL
,拿到 base64Data
contentType
base64ToBlob()
将 base64Data
转换为 Blob
FormData().append()
可用于上传
URL.createObjectURL()
可用于下载
Table of contents
展开目录
原生 Base64 编码和解码
从 IE10+浏览器开始,所有浏览器就原生提供了 Base64 编码解码方法,不仅可以用于浏览器环境,Service Worker 环境也可以使用。
它们就是 atob
和 btoa
:
a
表示 Base64 字符串
b
表示 普通字符串
预览图片
-
监听 <input type="file" />
的 onchange
拿到选中的 File
对象;
-
使用 FileReader
的 readAsDataURL
并在 load
事件中获取到 data:URL
格式的字符串(base64 编码);
-
将 data:URL
赋值到 img.src
即可预览图片;
上传图片
从 data:URL 中解析出 base64Data 和 contentType
将 base64Data 和 contentType 转换为 Blob
下载图片
在某些情况中,我们可能需要使用 JS 去下载 data:URL
的图片,例如:小程序太阳码
小程序太阳码,由微信直接返回 data:URL
字符串,如果需要下载它: