0

我正在使用the cordova-plugin-camera从相册中获取图片navigator.camera.getPicture。这将destinationType: destinationType.FILE_URI. 返回一个File_URI = file:///storage/emulated/0/Android/data/{app}/cache/IMG20200916194914.jpg?1600372401486指向保存图像的缓存文件夹的路径。我需要将该图像放置为 div 的背景以用作壁纸,如下所示:

$("#imageCustom").css("background-image", "url(" + imageURI + ")");

问题是它抛出一个错误,上面写着:

Not allowed to load local: resource:file:///storage/emulated/0/Android/data/{app}/cache/IMG20200916194914.jpg?1600372401486

有没有办法获得该文件夹/文件的相对路径以供 html 访问?或者可能会将图像移动到另一个文件夹,我该怎么做?(我用它复制了它,resolveLocalFileSystemURL/requestFileSystem/copyTo/LocalFileSystem.PERSISTENT但它唯一做的就是将它复制到files我有同样问题的文件夹中。

提前致谢。

4

1 回答 1

1

感谢JM-AGMS

正如在科尔多瓦中发布的那样,从设备存储中加载图像文件使用cdvfile protocolcordova-plugin-file.

1.在索引页的Content-Security-Policy meta标签中增加了cdvfile: scheme,例如:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: cdvfile: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

2.添加<access origin="cdvfile://*" />config.xml

3.并用于将路径转换为图像:

resolveLocalFileSystemURL(imageURI, function(entry) {
    console.log('cdvfile URI: ' + entry.toInternalURL());

    $("#imageCustom").css("background-image", "url(" + entry.toInternalURL() + ")");
    $("#imageCustom").css("display", "block");
});

resolveLocalFileSystemURL(imageURI);
于 2020-09-18T01:40:42.750 回答