将图像文件存储在IndexedDB中

时间:2012-05-14 15:07:13

标签: javascript html5 indexeddb

我在尝试在IndexedDB本地存储中存储和映像文件时遇到问题,我抓住文件对象并尝试将其推送到IndexedDB但它似乎抛出并出错:DOM异常: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 个答案:

答案 0 :(得分:2)

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

IndexedDB使用HTML5 structured clone algorithm将对象复制到对象库中。根据{{​​3}},无法克隆错误和函数对象并抛出DATA_CLONE_ERR,因此请将其作为可能的解释。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

您可以使用 ydn-db API。

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

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

干杯。