我正在尝试下载一个10 GB的文件,但只有4 GB被保存到磁盘上,而且内存正在大量增加。
const res = await fetch('https://speed.hetzner.de/10GB.bin');
const file = await Deno.open('./10gb.bin', { create: true, write: true })
const ab = new Uint8Array(await res.arrayBuffer())
await Deno.writeAll(file, ab)
2条答案
按热度按时间xbp102n01#
你在缓冲React,这就是记忆不断增长的原因。
更新最新版本
Deno.open
现在返回一个FsFile
,该e1d1e在.writable
属性中包含WritableStream
,因此您可以通过管道将响应发送给它。旧版本
您可以迭代
res.body
,因为它当前是实现Symbol.asyncIterator
并在每个块上使用Deno.writeAll
的ReadableStream
。您还可以使用
writerFromStreamWriter
将其通过管道传输到文件从“https://deno.land/std@v0.60.0/io/streams.ts”;常量res=等待提取导入{FromStreamReader}(‘https://speed.hetzner.de/10GB.bin’);常量文件=等待Deno.Open(‘./10gb.bin’,{Create:TRUE,WRITE:TRUE}))
Const读取器=from StreamReader(res.body!.getReader());等待Deno.Copy(读取器,文件);file.lose();
cyvaqqii2#
下面是另一个简短的版本。