我正在摆弄WebRTC
文件共享,但现在遇到了blob
的问题。似乎(至少在谷歌浏览器上)blob文件的限制为500mb
我的接收者收到ArrayBuffers
并从中获取blob,然后将其存储在数组中。当收到最后一个ArrayBuffer
时 - 构建一个大blob,建立链接并将其提供给用户以下载文件。我试图发送800mb文件,但大blob被限制在500mb,因此文件已损坏。据我所知,这是一个众所周知的blob内存限制,它可以被某种方式绕过(我想https://www.sharefest.me/做了吗?),但是如何?
或者也许还有另一种方法让用户获得组合阵列缓冲区的链接并将它们保存为文件?
这是我的收件人代码:
var finalBlob;
var ind = 0;
var f = files_r[ind];//file
var part = f.currentChunk;
var blobs = f.fileblobs;
blobs.push(new Blob([data], {
type: f.mime
}));
f.currentChunk++;
if (f.currentChunk === f.totalchunks) {
finalBlob = new Blob(blobs, {
type: f.mime
});
var link = g(ind + '_link');
var url = URL.createObjectURL(finalBlob);
link.href = url;
link.download = f.name;
console.log("finished");
}
答案 0 :(得分:1)
您应该将blob保存到IndexedDB,然后查询它们,创建生成的blob并提供链接。看看这里的讨论https://code.google.com/p/chromium/issues/detail?id=375297。我使用Dexie(IndexedDB的包装器)来保存/检索到IndexedDB的块。