小编mae*_*rsk的帖子

使用 StreamSaver.js 流式传输大型 blob 文件

我正在尝试使用Angular 组件中的StreamSaver.js将大型数据文件从服务器直接下载到文件系统。但在~2GB之后就会出现错误。数据似乎首先被传输到浏览器内存中的 blob 中。而且可能有 2GB 的限制。我的代码基本上取自 StreamSaver 示例。知道我做错了什么以及为什么文件没有直接保存在文件系统上吗?

服务:

public transferData(url: string): Observable<Blob> {
    return this.http.get(url, { responseType: 'blob' });
}
Run Code Online (Sandbox Code Playgroud)

成分:

download(url: string) {
    this.extractionService.transferData(url)
      .subscribe(blob => {
        const fileStream = streamSaver.createWriteStream('data.tel', {
          size: blob.size
        });
        const readableStream = blob.stream();
        if (window.WritableStream && readableStream.pipeTo) {
          return readableStream
            .pipeTo(fileStream)
            .then(() => console.log("done writing"));
        }
        const writer = fileStream.getWriter();
        const reader = readableStream.getReader();
        const pump = () =>
          reader.read()
            .then(res => res.done ? writer.close() : writer.write(res.value).then(pump));
        pump();
      });
} …
Run Code Online (Sandbox Code Playgroud)

javascript angular angular-httpclient

3
推荐指数
1
解决办法
8609
查看次数

标签 统计

angular ×1

angular-httpclient ×1

javascript ×1