我试图将一个blob图像保存到在Android上运行的Apache Cordova应用程序上的sqlite(Web SQL)。
我已经弄明白了如何创建blob并从本地文件中获取它。问题是在数据库上,而不是保存blob,而是保存一个表示[Object Blob]的字符串
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","http://localhost/image.jpg",true);
xmlhttp.responseType = 'blob';
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState==4){
var product_image = xmlhttp.response;
db.transaction(tx.executeSql("INSERT INTO scans(product_image) VALUES (?)",[product_image]), errorCB);
}
}
xmlhttp.send();
实际上,product_image返回一个jpeg blob对象。但如前所述,当我执行SELECT时,结果返回[Object Blob]
这就是我创建数据库的方式:
CREATE TABLE IF NOT EXISTS scans(id INTEGER PRIMARY KEY, product_image BLOB)
答案 0 :(得分:1)
WebSQL不直接支持二进制数据。
通常,二进制数据会转换为某种文本格式,如Base64,并以文本形式存储在数据库中。
或者,使用blob literals和hex() function将blob值视为SQL和JavaScript之间接口的十六进制字符串。