如何将二进制数据(在 ArrayBuffer 对象中)保存到 IndexedDB 中?
IndexedDB 规范没有提到 ArrayBuffer——这是否意味着它不受支持(我必须将 ArrayBuffer 打包为字符串或数组?)。
最佳答案
简单地保存 ArrayBuffer 应该“正常工作”。我相信它适用于所有当前的 IndexedDB 实现。
即像这样的东西:
var trans = db.transaction("mystore", IDBTransaction.READ_WRITE); // or "readwrite"
trans.objectStore("mystore").put(myArrayBuffer, "mykey");
发现这是由规范定义的……至少可以说是具有挑战性的……。但它是这样的:
- IndexedDB 对所有存储数据使用“结构化克隆”定义。
- “结构化克隆”在 HTML5 规范中定义,并提到了许多 Javascript 原生的数据类型以及一些其他类型,如文件和 Blob。
- Khronos 的 ArrayBuffer 规范定义了 ArrayBuffers 并指定“结构化克隆”的 HTML5 定义应该更改为也克隆 ArrayBuffers。
是的,我知道,我也不会找到它。
关于html - 在 IndexedDB 中保存 ArrayBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8833387/