ios 如何在使用wkwebview时使用Cordova在img标签中显示相机图像

xkftehaa  于 2023-10-21  发布在  iOS
关注(0)|答案(1)|浏览(133)

该应用程序使用cordova-ios版本6.0.0。所有WkWebView代码。
当用户使用 cordova-plugin-camera 插件选择一张图片时,我将返回的图片URI设置为 img 标签的 src 属性,这会触发一个错误,因为URI以 file:// 开头:
不允许加载本地资源:file:///xxx/xxx/xxx/xxx.jpg
wkwebview和cordova-ios版本6是如何做到这一点的,以显示选定的图像?
我试过无数次了,还是做不到。我正在使用WkURLSchemeLog,我在X1.xml中将首选项设置为app和localhost,如建议的here

<preference name="scheme" value="app" />
<preference name="hostname" value="localhost" />

我看到相机插件返回的file://URL存储在tmp文件夹中。所以我尝试使用app://localhost访问它,但我得到404错误:

var pos = photoURI.indexOf('/tmp');
if(pos >=0){
    photoURI = 'app://localhost' + photoURI.substr(pos);
}
qncylg1j

qncylg1j1#

app://localhost仅提供www资产。

解决方案一:

使用此插件https://github.com/communico/cordova-httpd在应用程序内启动本地服务器

cordova.plugins.CorHttpd.startServer({
    'www_root': cordova.file.dataDirectory.replace( 'file://', '' ),
    'port': 8080,
    'localhost_only': false
}, function( url ){
    // eg. http://10.0.0.185:8080/
    // if localhost_only is true,then url is http://127.0.0.1:8080/
    console.log(url);
}, function( error ){
    console.log(error);
});

例如,如果文件路径看起来像:file:///data/user/0/com.pushsoft.aio5app/files/image/7c8f2985-01b3-4fd2-ad7b-f39812a920a2
您可以使用此URL来显示图像:http://127.0.0.1:8080/image/7c8f2985-01b3-4fd2-ad7b-f39812a920a2

方案二:

您可以将图像放在file:///var/mobile/Containers/Data/Application/<UUID>/tmp/中,<img>只能通过'file://'协议显示此目录中的图像

相关问题