gpt4 book ai didi

javascript - indexedDB 的每条记录大小限制是多少?

转载 作者:行者123 更新时间:2023-12-01 15:02:03 26 4
gpt4 key购买 nike

我正在为 HTML5 构建文件存储,并且使用 indexedDB 作为存储,我通过 xmlHttpRequest 从服务器请求文件,响应类型为 arrayBuffer(对于 chrome)和 blob(对于其他浏览器)。

即使文件集合大小为 500MB 或更大,一切都很好(嘿,它甚至可以达到 GB)。但是当我将文件添加到 indexedDB 时,我注意到一些奇怪的事情,它会在 时触发错误。单文件超过~120MB,因此不存储。但是当文件小于 120MB 时,它会存储它。

请注意,仅在存储单个文件> 120MB时才会出现此错误,例如,200MB的.mp4文件会触发错误,但如果我有5个视频,每个视频的大小为100MB(所以总数将是500MB)一切都会好起来的。

我想知道这是限制规则还是一些故障,两者有相同的错误。我没有找到任何关于它的文档。我在 IE 和 Chrome 中测试了它。

编辑:
好的,我在存储文件时显然在 indexedDB 的 add 或 put 函数中遇到了这个错误:

在 e.target.error.message 中:

序列化值太大(size=140989466 bytes, max=133169152 bytes)

最佳答案

在问这个问题时,Chrome 仍然不支持将 Blob 保存到 IndexedDB,它 only came the next month .
对于现在面临同样问题的任何人,直接存储 Blob 或文件,而不是 ArrayBuffers。
与 ArrayBuffers 不同,将 Blob 保存到 IDB 不需要序列化其数据,the serialization steps of a Blob只是为了制作 js 对象的快照并保持链接到相同的底层字节序列,它本身没有被克隆。
您应该面对的唯一限制是 the one of the db itself .

取自 Chrome 公告的代码:

var store = db.transaction(['entries'], 'readwrite').objectStore('entries');

// Store the object
var req = store.put(blob, 'blob');
req.onerror = function(e) {
console.log(e);
};
req.onsuccess = function(event) {
console.log('Successfully stored a blob as Blob.');
};

关于javascript - indexedDB 的每条记录大小限制是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24362839/

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