问题描述
我正在开发针对iOS和Android的混合应用程序。我必须实现照片上载器,因此我是通过ImagePicker
和File
Cordova插件实现的。我在Android上进行了测试,一切正常。
问题是,当我在iOS上对其进行测试时,我通过ImagePicker
获得了图像URI,但是File
引发了以下错误:
我已经看到很多与此错误相关的问题,但是当我遇到iOS问题时,它们都与Android有关。我知道这是一个非常复杂的问题,因此,如果有人可以给我任何建议,我将不胜感激。
有关该问题的更多详细信息:
this.imagePicker
.getPictures({
maximumImagesCount: 1,})
.then(async (result : string[]) => {
let file = 'file://' + result[0];
let path = file.substring(0,file.lastIndexOf("/") + 1);
this.image = await this.file.readAsDataURL(path,file): // Line which throws the exception
});
PS:我已经尝试过以我能想象的所有方式添加'file://'=)
预先感谢
解决方法
感谢你们俩的帮助,我通过将outputType更改为1(base64 dataURL)而不是0(URI)来解决了问题。
这是修复我的错误的代码。
this.imagePicker
.getPictures({
outputType: 1,})
.catch((e) => alert(e))
.then(async (results: string[]) => {
this.image = "data:image/jpg;base64," + results[0]
}
});
对此的可能解释是ImagePicker正在从ios画廊目录复制到ImagePicker的临时目录,然后File试图读取这些复制的文件,但它们必须已被iOS File System删除。