首先背景:
平台: Android 4.4.2可访问整个内核源代码。编译我自己的Android版本
有问题的应用:它严格来说是一个webview / HTML5应用程序。 Javascript / jQuery中的所有内容。 Android活动只启动webview,然后Javascript完成其余的工作。
功能:当您启动应用程序时,平台自动在后台通过wifi / BT等接收jpeg.HW / OS将图像本地保存在Android文件系统中,请说/ data / somefolder / image .JPEG
现在webview读取此图像并显示(它可以)并且还需要存储在IndexedDB中以进行缓存。这就是问题所在。
根据以下代码使XMLHttpRequest()
加载图片时:
var db = Database.indexedDB.tags;
// Create XHR
var xhr = new XMLHttpRequest(), blob;
xhr.open("GET", "file:///data/somefolder/image.jpeg", true); //I suspect I am not specifying the image correctly
// Set the responseType to blob
xhr.responseType = "blob";
xhr.addEventListener("load", function () {
if (xhr.status === 200) {
// Blob as response
blob = xhr.response;
console.log("Blob Retrieved from image URL");
var browserName = BrowserType().brand;
// Put the blob into the dabase
if (browserName == 'Chrome') {
// Chrome can't store blobs at the moment.
// Convert to base64.
convertToBase64(blob, continuation);
} else {
continuation(blob);
}
function continuation(blob) {
// Open a transaction to the database
var transaction = db.transaction(["tagStore"], 'readwrite');
tag.blob = blob;
var putRequest = transaction.objectStore("tagStore").put(tag, new Date().getTime());
putRequest.onsuccess = function(event) {
console.log( "blob Stored in database!");
};
putRequest.onerror = function(event) {
console.log(key + " Storage Error:" + event);
};
}
}else{
console.log("ERROR: Blob Can't Be Retrieved from URL:" + "xhr.status = "+xhr.status);
}
}, false);
xhr.onreadystatechange = function(){
//console.log(xhr.readyState+" " + xhr.status);
}
// Send XHR
xhr.send();
执行上述代码时出错
XMLHttpRequest cannot load file:///data/somefolder/image.jpeg Cross origin requests are only supported for HTTP.
我的indexedDB实现源自一个非常好的教程Mozilla Hacks。和其他这样的例子。我已经确定它适用于我的其他应用程序。
问题陈述: 那么,有没有办法将图像从Android文件系统保存到IndexedDB?
谢谢。