【发布时间】:2016-11-18 00:32:05
【问题描述】:
是否可以动态生成大文件(10Gb+)供客户端下载?
我正在构建一个动态创建文件并将它们下载到客户端的 web 应用程序。我通过创建一个数据块并使用 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));
}
但是,这不适用于大文件。 有没有办法将文件流式传输到客户端,或者将数据附加到文件中,以便可以逐段生成文件,而不是在下载之前生成整个文件?
【问题讨论】:
-
Chrome 中有一个最大字符串长度 - see this post。
-
但它不适用于
List<String>because we're running out of memory then ... -
您可以流式传输。我在这里使用它来使用 Docker 服务 github.com/bwu-dart/bwu_docker/blob/… 但它是
dart:io代码,但可能会帮助您获得一些想法。 -
我怀疑最大字符串长度会是个问题。我通过将先前构造的 blob 与新的小字符串组合来构造我的 Blob。
-
@GünterZöchbauer 如果我可以触发浏览器保存文件,看起来 HTTP 响应流可能会起作用。如果可行,我会从客户端流式传输到自身,因为我没有后端。
标签: javascript html google-chrome dart