首页 > 解决方案 > 如何在 Deno 中将 arrayBuffer 转换为 Uint8Array?

问题描述

我正在使用 fetch api 在 Deno 中下载图像。在 Response 对象上,我正在调用 arrayBuffer() 方法,以获取响应的最终数据:

const response = await fetch('https://www.example.com/someimage.jpg')
const data = await response.arrayBuffer();//This returns an arrayBuffer.

然后我想把这些数据写入一个文件,就像你在 Node 中做的那样:

await Deno.writeFile('./someimage.jpg' ,data)

图像变成空的。文档说 Deno.writeFile 需要一个 Uint8Array,但我不知道如何从从 fetch 响应接收到的 arrayBuffer 构造它。

如何才能做到这一点?

标签: javascriptdeno

解决方案


您必须将 传递ArrayBufferUint8Array构造函数

您不能直接操作 ArrayBuffer 的内容;相反,您创建一个类型化的数组对象或 DataView 对象,它以特定格式表示缓冲区,并使用它来读取和写入缓冲区的内容。

new Uint8Array(arrayBuffer);

const response = await fetch('https://www.example.com/someimage.jpg')
const data = await response.arrayBuffer();//This returns an arrayBuffer.
await Deno.writeFile('./someimage.jpg' , new Uint8Array(data))

推荐阅读