base64-pro
是一款 Base64 编解码工具。
- 纯 JS
- 零依赖
- 支持现代浏览器 & Node.js
- 支持二进制数据和 “Base64 字符串” 互转
- 支持 “Unicode 字符串” 和 “Base64 字符串” 互转 (atob 和 btoa 只支持 code point 是 0-255 的字符)
- 支持将二进制数据或 “Unicode 字符串” 转成 DataURL
- 支持自定义 Base64 字符集
- 支持 TypeScript
- 支持 ESM、CommonJS、浏览器直接加载
npm i base64-pro
import Base64 from "base64-pro"; // ESM
或
const Base64 = require("base64-pro"); // CommonJS
或
在浏览器中直接加载 JS 文件 来使用,会获得全局变量 window.Base64
。
1. 二进制数据和 “Base64 字符串” 互转。(二进制数据可以是 ArrayBuffer 实例 或 某种 TypedArray 实例 或 DataView 实例 或 Node.js 中的 Buffer 实例)
const b64 = new Base64();
// 编码
b64.bufferToBase64(new Uint8Array([1, 2, 3, 4])); // AQIDBA==
// 解码
b64.base64ToBuffer("AQIDBA=="); // ArrayBuffer { [Uint8Contents]: <01 02 03 04>, byteLength: 4 }
// 编码
b64.strToBase64("👻base64-pro🤗"); // 8J+Ru2Jhc2U2NC1wcm/wn6SX
// 编码
b64.base64ToStr("8J+Ru2Jhc2U2NC1wcm/wn6SX"); // 👻base64-pro🤗
b64.bufferToDataURL(require("fs").readFileSync("icon.png"), "image/png"); // data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA...
b64.strToDataURL("👻base64-pro🤗"); // data:text/plain;charset=utf-8;base64,8J%2BRu2Jhc2U2NC1wcm%2Fwn6SX
new Base64(initOpts)
initOpts
- 必填: 否
- 类型: object
- 属性:
alphabet
- 必填: 否
- 类型: string
- 默认值:
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
- 说明: Base64 字符集
encodeChunkSize
- 必填: 否
- 类型: number
- 默认值:
16383
- 说明: 性能优化相关的参数,不建议修改。长字符串拼接是比较慢的,所以在生成 Base64 字符串时,会分块生成,最后合并成一个完整字符串,这个值代表每多少字节的原始数据生成一个临时的字符串片段。
- 说明: 将二进制数据转成 Base64 字符串。
- 参数:
value
- 必填: 是
- 类型: buffer
- 说明: buffer 代指 ArrayBuffer 实例 或 某种 TypedArray 实例 或 DataView 实例 或 Node.js 中的 Buffer 实例
padding
- 必填: 否
- 类型: boolean
- 默认值:
true
- 说明: 当 Base64 字符串的长度不是 4 的整数倍时,是否自动在尾部用
=
补齐。
- 返回值: Base64 字符串。
- 说明: 将 Base64 字符串转成二进制数据。
- 参数:
base64Str
- 必填: 是
- 类型: string
- 说明: 合法的 Base64 字符串
- 返回值: ArrayBuffer 实例。你可以自由的创建任何一种视图来读取这部分二进制数据。
- 说明: 将 Unicode 字符串转成 Base64 字符串。
- 参数:
str
- 必填: 是
- 类型: string
- 说明: Unicode 字符串
encoding
- 必填: 否
- 类型: string
- 默认值:
utf-8
- 可选值:
utf-8
,utf8
,utf-16
,utf-16le
,utf-16be
- 说明: Unicode 有多种字符编码方式,即使是相同的字符,不同的编码方式底层的二进制也会不一样。目前支持按照 utf-8 和 utf-16 的编码方式将 Unicode 字符串转成 Base64 字符串。其中 utf8 是 utf-8 的别名。utf-16 是 utf-16le 的别名。utf-16le 为小端字节序编码、utf-16be 为大端字节序编码。
padding
- 必填: 否
- 类型: boolean
- 默认值:
true
- 说明: 同上。
- 返回值: Base64 字符串。
- 说明: 将 Base64 字符串转成 Unicode 字符串。
- 参数:
base64Str
- 必填: 是
- 类型: string
- 说明: 合法的 Base64 字符串
encoding
- 必填: 否
- 类型: string
- 默认值:
utf-8
- 可选值:
utf-8
,utf8
,utf-16
,utf-16le
,utf-16be
- 说明: 同上。
- 返回值: Unicode 字符串。
- 说明: 将 Unicode 字符串转成一段 DataURL 字符串。转化后的结果可以直接在浏览器地址栏中打开。
- 参数:
str
- 必填: 是
- 类型: string
- 说明: Unicode 字符串
encoding
- 必填: 否
- 类型: string
- 默认值:
utf-8
- 可选值:
utf-8
,utf8
,utf-16
,utf-16le
,utf-16be
- 说明: 同上。
- 返回值: DataURL 字符串。
- 说明: 将二进制数据转成一段 DataURL 字符串。使用 DataURL 可减少网络请求,建议将一些体积较小的文件转成 DataURL。
- 参数:
value
- 必填: 是
- 类型: buffer
- 说明: 同上。
mimeType
- 必填: 否
- 类型: string
- 默认值:
application/octet-stream
- 说明: 有效的 MIME 类型,比如
image/png
、application/pdf
等。
- 返回值: DataURL 字符串。