将图像从android文件系统保存到IndexedDB

时间:2014-10-03 15:19:41

标签: javascript android html5 webview indexeddb

首先背景:

平台: 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?

谢谢。

0 个答案:

没有答案