5

我在尝试将图像文件存储在 IndexedDB 中时遇到问题,我抓取了文件对象并尝试将其推送到 IndexedDB 中,但它似乎引发了错误:

DOM Exception: DATA_CLONE_ERR (25)

如何将文件对象(如下所示)转换为可以存储在 indexedDB 中并在以后从 indexedDB 中检索的内容?

attribute: 32
contentType: "image/png"
displayName: "image1"
displayType: "PNG File"
fileType:    ".png"
name:        "image1.png"
path:        "C:\pictures\image1.png"
4

5 回答 5

6

IndexedDB 支持在 Firefox 和 Chrome 中存储 blob。有关于将图像存储到 IndexedDB 的可用示例。该代码适用于最新版本的 Chrome 和 Firefox。希望能帮助到你。

于 2012-12-19T00:56:13.783 回答
2

我相信您的对象可能会发生一些事情,使其看起来与上面列出的键/值对创建的对象文字不同。我建议console.log在对象通过后对其进行检查JSON.stringify,以确保它与您的意图一一对应。

IndexedDB 使用 HTML5结构化克隆算法将对象复制到对象存储中。根据规范,不能克隆 Error 和 Function 对象并抛出 a DATA_CLONE_ERR,因此请将此视为可能的解释。

于 2012-05-15T00:45:57.473 回答
2

另请注意,Chrome(至少到版本 23)尚不支持在 IndexedDB 中存储 blob,如果您尝试直接存储它们,则会抛出您描述的错误。与此同时,您将不得不使用 FileSystem API。

于 2012-09-05T04:02:41.087 回答
1

这篇 Mozilla hacks 文章应该有所帮助 - http://hacks.mozilla.org/2012/02/storing-images-and-files-in-indexeddb/

于 2012-08-10T20:41:58.153 回答
0

您可以使用ydn-db API。

请参阅下面链接的“存储文件和 Blob 数据”部分。

http://dev.yathit.com/ydn-db/transaction.html

干杯。

于 2013-12-09T19:47:32.063 回答