gpt4 book ai didi

javascript - 是否可以动态生成大文件(10Gb)并将它们流式传输到客户端?

转载 作者:搜寻专家 更新时间:2023-10-31 08:41:36 27 4
gpt4 key购买 nike

是否可以动态生成大文件 (10Gb+) 供客户端下载?

我正在构建一个动态创建文件并将它们下载到客户端的网络应用程序。我通过创建数据 Blob 并使用 objectUrl 下载它们来实现这一点。

(示例来自:Download large files in Dartlang):

import 'dart:html';

void main() {
var data = new Blob(['Hello World!\n'*1000000]);
querySelector("#downloadLink")
..setAttribute('href', Url.createObjectUrl(data));
}

但是,这不适用于大文件。有没有一种方法可以将文件流式传输到客户端,或者将数据附加到文件中,以便可以逐个生成文件而不是在下载之前生成整个文件?

最佳答案

对于 < 800MB 我会推荐 FileSaver但是对于 10GB 以上的内存,你将需要像 StreamSaver 这样的东西(它只适用于 Blink doe)16GB 以上对我来说没有任何问题

const fileStream = streamSaver.createWriteStream('filename.txt')
const writer = fileStream.getWriter()
const encoder = new TextEncoder()

// When you have any data you write it as Uint8array
let data = 'a'.repeat(1024)
let uint8array = encoder.encode(data + "\n\n")

writer.write(uint8array) // chunk
writer.write(uint8array) // chunk
writer.write(uint8array) // chunk
writer.write(uint8array) // chunk

// After you have written all bytes you need to close it
writer.close()

(只是不要一次写入所有 block ,当您获得更多可用数据时逐步执行)

关于javascript - 是否可以动态生成大文件(10Gb)并将它们流式传输到客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40667501/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com