【发布时间】:2014-08-04 15:43:19
【问题描述】:
在我们进入任何事情之前,这是代码运行的环境:
Google Chrome Version 36.0.1985.125 on Windows 7
Libraries:
IndexedDBShim
IDBWrapper
jQuery1.11+Bootstrap
当我尝试将图像添加到 indexedDB objectStore 时,我收到此错误:
Uncaught DataCloneError: Failed to execute 'add' on 'IDBObjectStore': The object store currently does not support blob values.
这是我打开数据库的方式:
var version=1;
var openRequest=indexedDB.open("imgdb",version);
openRequest.onerror=function(e)
{
console.log("Error when opening database");
console.log(e);
}
openRequest.onupgradeneeded=function(e)
{
console.log("The database is being upgraded");
var thisDB=e.target.result;
var trans=e.target.transaction;
var imagesStore;
if(!thisDB.objectStoreNames.contains("images"))
{
//if an objectStore of the name images does not exist create one
imagesStore=thisDB.createObjectStore("images",{keyPath:"id",autoIncrement:true});
//Create any indices here...
}
else
{
//if the objectStore already exists,use it...
imageStore=trans.objectStore("images");
//Create any indices here
}
}
openRequest.onsuccess=function(e)
{
console.log("Successfully opened the database");
db=e.target.result;
console.dir(db);
db.onerror=function(e)
{
console.log("Database error "+e.target.errorCode);
console.dir(e.target);
}
}
这是发生错误的地方:
function addImage(img)
{
console.log("Inserting image into db");
console.log("The image recieved from xhr");
console.log(img);
console.dir(db);
var trans=db.transaction(["images"],"readwrite");
var images=trans.objectStore("images");
var request=images.add({
title:"marker-image",
image:img
});
request.onsuccess=function(e)
{
console.log("Image successfully added to the database");
getImage();
};
request.onerror=function(e)
{
console.log("An error occured while inserting the image");
console.log(e.target.errorCode);
console.dir(e.target);
};
}
【问题讨论】:
-
能不能把图片转成base-64字符串存入indexeddb?
标签: image google-chrome blob indexeddb