Base64 图片、文件、文本有什么区别?
Base64 的作用是把字节转换成文本。这样更方便放进 JSON、HTML、CSS、邮件或 API 参数里,但它不是加密。
只要拿到字符串,任何人都可以解码。
Base64 文本
普通文本会先转换成字节,通常是 UTF-8,然后再编码成 Base64。
这对中文、emoji 等非 ASCII 字符很重要。浏览器里的 btoa() 偏底层字节处理,直接处理 Unicode 文本时容易出错。
Base64 文件
文件本身就是字节。文件的 Base64 字符串表示的是文件内容,不包含文件名或文件夹。
常见用途包括:
- 小型 API 参数
- 邮件附件
- 通过只支持文本的系统传递二进制数据
- 调试文件上传
Base64 通常会让体积变大约三分之一,所以不适合大文件长期传输。
Base64 图片和 Data URL
图片的 Base64 经常会带一个 data URL 前缀:
data:image/png;base64,iVBORw0KGgo...
前缀告诉浏览器媒体类型,真正的 Base64 内容在逗号后面。
Data URL 和纯 Base64 的区别
很多复制粘贴问题都出在这里:
| 形式 | 示例 | 适合场景 |
| --------- | -------------------------------------- | -------------------------------------- |
| 纯 Base64 | iVBORw0KGgo... | API 已经知道文件类型,只需要文件内容。 |
| Data URL | data:image/png;base64,iVBORw0KGgo... | HTML、CSS、图片预览、浏览器渲染。 |
如果接口要求纯 Base64,发送前要去掉 data:image/png;base64, 前缀。如果浏览器预览需要 data URL,就要保留前缀,否则浏览器不知道这段字节到底是 PNG、JPG、SVG、PDF 还是其他类型。
常见错误
不要把 Base64 当成隐私保护。它只是编码,不是加密。密码、API key、JWT、隐私文档不要因为变成 Base64 看起来“不像明文”就放心传递。
还要注意换行和空格。有些系统会把很长的 Base64 字符串自动换行,有些系统又不接受这些换行。如果解码后的文件损坏,先检查字符串是不是在复制、JSON 转义、邮件传输时被改过。
简短结论
Base64 是字节编码格式。文本、图片、文件都可以变成 Base64 字符串;图片常见 data: URL 前缀。Base64 不是加密,不要用来隐藏密钥或密码。
参考资料: