解析 data: URL( URL)
此软件包帮助您解析 data: URL( URL) 根据WhatWG获取标准数字 :
const parseDataURL = require("data-urls");
const textExample = parseDataURL("data:,Hello%2C%20World!");
console.log(textExample.mimeType.toString()); // "text/plain;charset=US-ASCII"
console.log(textExample.body); // Uint8Array(13) [ 72, 101, 108, 108, 111, 44, … ]
const htmlExample = parseDataURL("data:text/html,%3Ch1%3EHello%2C%20World!%3C%2Fh1%3E");
console.log(htmlExample.mimeType.toString()); // "text/html"
console.log(htmlExample.body); // Uint8Array(22) [ 60, 104, 49, 62, 72, 101, … ]
const pngExample = parseDataURL("data:image/png;base64,iVBORw0KGgoAAA" +
"ANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4" +
"//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU" +
"5ErkJggg==");
console.log(pngExample.mimeType.toString()); // "image/png"
console.log(pngExample.body); // Uint8Array(85) [ 137, 80, 78, 71, 13, 10, … ]
API 密码
此软件包的主要模块默认导出是一个接受字符串并返回 a 的函数 { mimeType, body } 对象,或 null 如果结果无法解析为 data: URL (中文(简体) ).
- 这个
mimeType财产是 何为wg- imeme 类型是因为MIMEType课. - 这个
body属性为 aUint8Array举个例子.
如以上示例所示,您可以很容易地使用它来获得一个被字符串化的MIME类型版本 toString() 方法。 读取更多 获取字符串版本的身体.
解码尸体
要解码解析数据URL的正文字节,您需要使用 charset 如果有的话,MIME类型的参数。 包含编码 标签; 存在着 各种可能的标签 为给定的编码。 你可以用这个 TextDecoder API 用于此 :
const parseDataURL = require("data-urls");
const dataURL = parseDataURL(arbitraryString);
// If there's no charset parameter, e.g. if `arbitraryString` is `"data:text/plain,H%C3%A9llo!"`,
// then let's guess UTF-8.
const encodingLabel = dataURL.mimeType.parameters.get("charset") ?? "utf-8";
const decoder = new TextDecoder(encodingLabel);
const bodyDecoded = decoder.decode(dataURL.body);
(注意截至2026-01年本作编写时,Node.js已内置 TextDecoder 有很多正确性bugs, 所以我们建议使用多填充从 @exodus/bytes 包直到它们固定为止。 )
使用解析字符集非常重要,因为 光谱要求 如果未给出可解析的 MIME 类型,则默认为 "US-ASCII", (中文(简体) ), aka 窗口-1252-不是UTF -8 就像你可能认为的那样 所以,比如说,给一个 arbitraryString 联 合 国 "data:,H%E9llo!",上面的代码片断将正确生成一个 bodyDecoded 联 合 国 "Héllo!" 使用窗口1252解码器,而如果你使用UTF-8解码器,你会回来 "H�llo!"。 。 。 .
高级功能: 从 URL 记录解析
如果你正在使用 whatwg-url 软件包,您可能已经手头有“URL记录”对象,由该软件包生成 parseURL 输出。 这样的话,你可以用这个包 fromURLRecord 导出以保存一些工作 :
const { parseURL } = require("whatwg-url");
const dataURLFromURLRecord = require("data-urls").fromURLRecord;
const urlRecord = parseURL("data:,Hello%2C%20World!");
const dataURL = dataURLFromURLRecord(urlRecord);
在实践中,我们期望这种功能只被消费者使用,比如: 日记,它们使用这些软件包的水平非常低.