Ionic 3 Native:File:{code:5,message:“ENCODING_ERR”}
我在Ionic 3中使用checkFile function from File API plugin来检查文件是否存在于本地。无极拒绝与以下错误:Ionic 3 Native:File:{code:5,message:“ENCODING_ERR”}
FileError {码:5消息: “ENCODING_ERR”}
从我看到的Mozilla Docs of the File API,问题是,“URL格式不正确。 “但是,我不明白网址是如何变形的。这里是展示我如何调用该函数加(的baseDirectory
的值设置为file:///data/user/0/ch.protectator.fehpedia/files/
)参与变量的实际值的相关代码:
let baseDirectory = this.file.dataDirectory;
let fileToCheck = "File:Icon Portrait Abel.png";
let promise = this.file.checkFile(this.file.dataDirectory, fileName).then(bool => {
// Things
}, reason => {
console.error(reason);
});
这就是失败的前景。这种情况的奇怪之处在于,我实际上试图在代码中稍后显示该图像,而忽略File.checkFile是否被发现,并且图像显示。
在HTML模板,我以后使用:
<img [src]="imgUrl">
其中imgUrl
使用设置:
this.imgUrl = this.file.dataDirectory + '/' + "File:Icon Portrait Abel.png";
所以当通过web视图称为图像存在,显示正常,但本地文件插件告诉我这个URL格式不正确,即使对我来说它似乎也是完全一样的URL。这就是我被卡住的地方,我不知道要改变代码的工作方式。 checkFile
应该以不同的方式使用吗?另外,一个更准确的失败原因会有所帮助,但我得到的只是ENCODING_ERR
,我不知道网址的实际部分看起来是否有问题。
通过类似的案例,我发现没有解决方案,也没有关于这个具体案例的文件。但在尝试不同的值时,我发现了导致此错误的原因::
。是的,冒号。存在于文件名中的一个。
虽然我还没有关于解释为什么:
导致本地File
插件失败,但没有Web视图,从文件名中去除:
有效地使File
看到它而不引发ENCODING_ERR
。虽然这不是最佳解决方案,但此解决方法是有效的。
“虽然我仍然没有解释为什么:导致本地文件插件失败”冒号(:)是一个重新存储的字符,不能在Windows系统的文件名中使用(但可以在Linux系统中使用)。也许为了兼容性,File插件保留Windows和Linux系统上的所有字符。 (文件名中禁止的字符列表)[https://*.com/a/31976060/4511424] –
从哪里得到这个值'this.file.dataDirectory'?你也可以展示代码吗? – Sampath
'this.file'注入到类的构造函数中,它是Ionic Native API中的'File'类。因此,'dataDirectory'是https://ionicframework.com/docs/native/file/#dataDirectory –