当所有值都代表原始字节时,为什么Blob()
传递 Array 和 Uint8Array 会产生不同的结果?
new Blob([[0,60,0,60]])
// Blob {size: 9, type: ''}
new Blob([new Uint8Array([0,60,0,60])])
// Blob {size: 4, type: ''}
当所有值都代表原始字节时,为什么Blob()
传递 Array 和 Uint8Array 会产生不同的结果?
new Blob([[0,60,0,60]])
// Blob {size: 9, type: ''}
new Blob([new Uint8Array([0,60,0,60])])
// Blob {size: 4, type: ''}
我有一个字符串,它是 base64 编码、gzip 压缩的 JSON 字符串。我能够将 base64 编码的字符串转换为字节。我可以使用 DecompressionStream API 来解压缩字节。
我的问题是,我还没有找到一种方法将放入缓冲区的字节转换为实现stream()函数的对象,从而将所有这些拼凑在一起。这是我到目前为止所拥有的。发送帮助。
const bpString = "0eJztvVlvJEmS...SPUfzw=="
const buf = Buffer.from(bpString, "base64")
//HOW DO I GET FROM `buf` TO `data` ???
const ds = new DecompressionStream("gzip")
const decompressedStream = data.stream().pipeThrough(ds)
const decoded = await new Response(decompressedStream).blob()
PS,我也尝试过使用 fetch 和数据 url,如下所示:const ret = await fetch("data:application/octet-stream;base64," + bpString)
但等待从未返回,也没有抛出错误。不知道幕后发生了什么,但是字符串可能非常大,所以也许它只是默默地失败了?!无论如何,我需要一个可靠的方法。并且它必须在浏览器中运行。