gpt4 book ai didi

javascript - 使用 javascript 下载大数据流 (> 1Gb)

转载 作者:可可西里 更新时间:2023-11-01 02:25:32 25 4
gpt4 key购买 nike

我想知道是否可以将数据从 javascript 流式传输到浏览器的下载管理器

使用 webrtc,我将数据(来自 > 1Gb 的文件)从一个浏览器流式传输到另一个浏览器。在接收端,我将所有这些数据存储到内存中(作为 arraybuffer ......所以数据基本上仍然是 block ),我希望用户能够下载它。

问题: Blob 对象的最大大小约为 600 Mb(取决于浏览器),因此我无法从 block 中重新创建文件。有没有办法流式传输这些 block ,以便浏览器直接下载它们?

最佳答案

如果你想从 api 或 url 获取大文件 blob,你可以使用 streamsaver。

npm install streamsaver

然后你可以这样做

import { createWriteStream } from 'streamsaver';

export const downloadFile = (url, fileName) => {
return fetch(url).then(res => {
const fileStream = createWriteStream(fileName);
const writer = fileStream.getWriter();
if (res.body.pipeTo) {
writer.releaseLock();
return res.body.pipeTo(fileStream);
}

const reader = res.body.getReader();
const pump = () =>
reader
.read()
.then(({ value, done }) => (done ? writer.close() : writer.write(value).then(pump)));

return pump();
});
};

你可以像这样使用它:

const url = "http://urltobigfile";
const fileName = "bigfile.zip";

downloadFile(url, fileName).then(() => { alert('done'); });

关于javascript - 使用 javascript 下载大数据流 (> 1Gb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42614880/

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