Android cordova从设备存储器加载图像文件

Android cordova从设备存储器加载图像文件,android,cordova,local-storage,Android,Cordova,Local Storage,我有一个图像标记,它是对应用程序目录中的图像文件的src引用。我使用cordova.file.applicationStorageDirectory获取应用程序目录,并将其余路径添加到其中(不是:我已经使用java android studio在其中创建了新目录和图像)。所以我的img src的完整路径是file:///data/data/com.test.Dir/myfoolder/myimg.jpg所以对于测试,我像一样使用它,但是img标签是空的,所以这似乎不是一种正确的方法。如何将应用程

我有一个图像标记,它是对应用程序目录中的图像文件的src引用。我使用
cordova.file.applicationStorageDirectory
获取应用程序目录,并将其余路径添加到其中(不是:我已经使用java android studio在其中创建了新目录和图像)。所以我的img src的完整路径是
file:///data/data/com.test.Dir/myfoolder/myimg.jpg
所以对于测试,我像
一样使用它,但是img标签是空的,所以这似乎不是一种正确的方法。如何将应用程序目录中的图像加载到图像标签。

您可以使用“cdvfile://”协议直接放置图像。将其用作:

<img src="cdvfile://localhost/persistent/img/logo.png" />

详情如下:


我知道这个问题是针对Android上的Cordova的,但供将来参考-这在iOS上不起作用,因为最新的WKWebView存在CORS问题。您需要手动读取文件并注入图像。大概是这样的:

    function loadImageFromFile(filename, index) {
        window.resolveLocalFileSystemURL(filename, function success(fileEntry) {
            fileEntry.file(function (file) {
                var reader = new FileReader();
                reader.onloadend = function() {
                    if (this.result) {
                        var elem = document.getElementById("imageitem");
                        var blob = new Blob([new Uint8Array(this.result)], { type: "image/png" });
                        elem.src = window.URL.createObjectURL(blob);
                    }
                };
                reader.readAsArrayBuffer(file);
            });
        }, function () {
            console.log("File not found: ");
        });
    }

所以我的道路变得cdvfile://localhost/persistent/myfoolder/myimg.jpg 附言图像是否在您的www文件夹中?没有www是只读的,因为它位于android_资源中,所以我需要将图像保存在应用程序目录中,并动态加载到图像标记中。在这种情况下,您的路径应该是
cdvfile://localhost/applicationStorageDirectory/myfolder/myimg.jpg
请添加解释
    function loadImageFromFile(filename, index) {
        window.resolveLocalFileSystemURL(filename, function success(fileEntry) {
            fileEntry.file(function (file) {
                var reader = new FileReader();
                reader.onloadend = function() {
                    if (this.result) {
                        var elem = document.getElementById("imageitem");
                        var blob = new Blob([new Uint8Array(this.result)], { type: "image/png" });
                        elem.src = window.URL.createObjectURL(blob);
                    }
                };
                reader.readAsArrayBuffer(file);
            });
        }, function () {
            console.log("File not found: ");
        });
    }