Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “错误”;对象存储当前不支持blob值;尝试在indexedDB中存储文件时_Javascript_Indexeddb - Fatal编程技术网

Javascript “错误”;对象存储当前不支持blob值;尝试在indexedDB中存储文件时

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

我正在尝试使用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>"]
[异常…”提供给操作的数据不符合要求。“代码:“0”nsresult:“0x80660005(DataError)”位置:“”

我不明白怎么了。

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

我发现一个文件系统回退:

它工作得很好