绕过blob 500mb限制,在磁盘上保存更大的文件



我正在摆弄WebRTC文件共享,但现在遇到了blob的问题。似乎(至少在google chrome上)blob文件的限制为500mb。
我的接收器接收ArrayBuffers并从中提取blobs,然后将其存储在数组中。当接收到最后一个ArrayBuffer时,构建一个大blob,并创建链接并提供给用户下载文件。我试图发送800mb的文件,但大blob的caped为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");        
}

您应该将blob保存到IndexedDB,然后查询它们,创建结果blob并提供链接。看看这里的讨论https://code.google.com/p/chromium/issues/detail?id=375297。我使用Dexie (IndexedDB的包装器)将块保存/检索到IndexedDB。

相关内容

  • 没有找到相关文章

最新更新