在 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 值视为十六进制字符串。
我正在尝试将 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 值视为十六进制字符串。