在WebSQL上插入blob

时间:2015-01-03 07:09:36

标签: android sqlite cordova web-sql

我试图将一个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)

1 个答案:

答案 0 :(得分:1)

WebSQL不直接支持二进制数据。

通常,二进制数据会转换为某种文本格式,如Base64,并以文本形式存储在数据库中。

或者,使用blob literalshex() function将blob值视为SQL和JavaScript之间接口的十六进制字符串。