在 WebSQL 上插入 blob

Insert blob on WebSQL

我正在尝试将 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 returns 一个 jpeg blob 对象。但如前所述,当我执行 SELECT 结果时 returns [Object Blob]

这是我创建数据库的方式:

CREATE TABLE IF NOT EXISTS scans(id INTEGER PRIMARY KEY, product_image BLOB)

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

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

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