尝试在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"
5条答案
按热度按时间but5z9lq1#
IndexedDB支持在Firefox和Chrome中存储blob。有可用的example来存储图像到IndexedDB。代码在最新版本的Chrome和Firefox中运行良好。希望它能有所帮助。
ttvkxqim2#
我相信你的对象可能有什么问题,这使得它看起来和你上面列出的键/值对创建的对象文字不同。我建议
console.log
在对象通过JSON.stringify
后对其进行检查,以确保它与你的意图一一匹配。IndexedDB使用HTML5 structured clone algorithm将对象复制到对象存储中。根据the spec,Error和Function对象不能被克隆并抛出
DATA_CLONE_ERR
,因此将其作为可能的解释。gcmastyq3#
另外请注意Chrome(至少在23版之前)还不支持在IndexedDB中存储blob,如果你尝试直接存储它们,将会抛出你所描述的错误。同时,你必须使用FileSystem API。
pgx2nnw84#
这篇Mozilla黑客文章应该会有所帮助-http://hacks.mozilla.org/2012/02/storing-images-and-files-in-indexeddb/
6ju8rftf5#
您可以使用ydn-dbAPI。
请参见下面链接的“存储文件和Blob数据”部分。
http://dev.yathit.com/ydn-db/transaction.html
干杯干杯干杯