我正在使用 fetch api 在 Deno 中下载图像。在 Response 对象上,我正在调用 arrayBuffer() 方法,以获取响应的最终数据:
const response = await fetch('https://www.example.com/someimage.jpg')
const data = await response.arrayBuffer();//This returns an arrayBuffer.
Run Code Online (Sandbox Code Playgroud)
然后我想把这些数据写入一个文件,就像你在 Node 中做的那样:
await Deno.writeFile('./someimage.jpg' ,data)
Run Code Online (Sandbox Code Playgroud)
图像变成空的。文档说 Deno.writeFile 需要一个 Uint8Array,但我不知道如何从 arrayBuffer 构造它,它是从 fetch 响应接收的。
如何才能做到这一点?
您必须将 传递ArrayBuffer给Uint8Array构造函数
您不能直接操作 ArrayBuffer 的内容;相反,您创建一个类型化数组对象或一个以特定格式表示缓冲区的 DataView 对象,并使用它来读取和写入缓冲区的内容。
new Uint8Array(arrayBuffer);
Run Code Online (Sandbox Code Playgroud)
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))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2215 次 |
| 最近记录: |