gpt4 book ai didi

javascript - 尝试在indexedDB中存储文件时出现错误 "The object store currently does not support blob values"

转载 作者:行者123 更新时间:2023-11-28 01:30:40 26 4
gpt4 key购买 nike

我正在尝试使用 IndexedDB 在 javascript 中进行存储来存储 blob。这是我的代码

var Storage = (function () {
function Storage(callback) {
var indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.OIndexedDB || window.msIndexedDB, IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.OIDBTransaction || window.msIDBTransaction, dbVersion = 1.0;

this.URL = window.URL || window.webkitURL;

var request = indexedDB.open('files', dbVersion);
var self = this;

request.onerror = function (e) {
console.log("Error creating/accessing IndexedDB database");
};

request.onsuccess = function (e) {
console.log("Success creating/accessing IndexedDB database");
self.db = request.result;

self.db.onerror = function (event) {
console.log("Error creating/accessing IndexedDB database");
};

// Interim solution for Google Chrome to create an objectStore. Will be deprecated
if (self.db.setVersion) {
if (self.db.version != dbVersion) {
var setVersion = self.db.setVersion(dbVersion);
setVersion.onsuccess = function () {
self.createObjectStore(self.db);
callback();
};
} else {
callback();
}
} else {
callback();
}
};

// For future use. Currently only in latest Firefox versions
request.onupgradeneeded = function (e) {
self.createObjectStore(e.target.result);
};
}
Storage.prototype.createObjectStore = function (db) {
console.log('Creating objectStore');
db.createObjectStore('files');
};

Storage.prototype.putFile = function (fileName, blob) {
console.log('Putting file in IndexedDB');
var transaction = this.db.transaction(['files'], 'readwrite');
var put = transaction.objectStore('files').put(blob, fileName);
};

return Storage;
})();

我就是这样使用的:

var storage = new Storage(function () {
var blob = new Blob(['FooBar']);
storage.putFile('test', blob);
});

在 Chrome 上我得到:

DataCloneError: Failed to execute 'put' on 'IDBObjectStore': The object store currently does not support blob values.

在 Firefox 上我得到:

[Exception... "Data provided to an operation does not meet requirements."  code: "0" nsresult: "0x80660005 (DataError)"  location: "<unknown>"]

我不明白出了什么问题。

最佳答案

我确实找到了问题的答案。好吧,我确实找到了解决问题的方法:“如何在 Firefox 中永久存储文件?”

我发现了一个文件系统后备:https://github.com/ebidel/idb.filesystem.js

效果很好。

关于javascript - 尝试在indexedDB中存储文件时出现错误 "The object store currently does not support blob values",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22149087/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com