Javascript “错误”;对象存储当前不支持blob值;尝试在indexedDB中存储文件时
我正在尝试使用IndexedDB在javascript中创建一个存储来存储blob。 这是我的密码Javascript “错误”;对象存储当前不支持blob值;尝试在indexedDB中存储文件时,javascript,indexeddb,Javascript,Indexeddb,我正在尝试使用IndexedDB在javascript中创建一个存储来存储blob。 这是我的密码 var Storage = (function () { function Storage(callback) { var indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.OIndexedDB || window.msIndexedDB, IDBT
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>"]
[异常…”提供给操作的数据不符合要求。“代码:“0”nsresult:“0x80660005(DataError)”位置:“”
我不明白怎么了。我确实找到了问题的答案。我确实找到了解决问题的办法:“如何在Firefox中永久存储文件?” 我发现一个文件系统回退: 它工作得很好