在IndexedDB中存储图像文件

0tdrvxhp  于 2022-12-09  发布在  IndexedDB
关注(0)|答案(5)|浏览(405)

尝试在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"
but5z9lq

but5z9lq1#

IndexedDB支持在Firefox和Chrome中存储blob。有可用的example来存储图像到IndexedDB。代码在最新版本的Chrome和Firefox中运行良好。希望它能有所帮助。

ttvkxqim

ttvkxqim2#

我相信你的对象可能有什么问题,这使得它看起来和你上面列出的键/值对创建的对象文字不同。我建议console.log在对象通过JSON.stringify后对其进行检查,以确保它与你的意图一一匹配。
IndexedDB使用HTML5 structured clone algorithm将对象复制到对象存储中。根据the spec,Error和Function对象不能被克隆并抛出DATA_CLONE_ERR,因此将其作为可能的解释。

gcmastyq

gcmastyq3#

另外请注意Chrome(至少在23版之前)还不支持在IndexedDB中存储blob,如果你尝试直接存储它们,将会抛出你所描述的错误。同时,你必须使用FileSystem API。

6ju8rftf

6ju8rftf5#

您可以使用ydn-dbAPI。
请参见下面链接的“存储文件和Blob数据”部分。
http://dev.yathit.com/ydn-db/transaction.html
干杯干杯干杯

相关问题