2017-08-28 142 views
1

我在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,我不知道网址的实际部分看起来是否有问题。

+0

从哪里得到这个值'this.file.dataDirectory'?你也可以展示代码吗? – Sampath

+0

'this.file'注入到类的构造函数中,它是Ionic Native API中的'File'类。因此,'dataDirectory'是https://ionicframework.com/docs/native/file/#dataDirectory –

回答

2

通过类似的案例,我发现没有解决方案,也没有关于这个具体案例的文件。但在尝试不同的值时,我发现了导致此错误的原因::。是的,冒号。存在于文件名中的一个。

虽然我还没有关于解释为什么:导致本地File插件失败,但没有Web视图,从文件名中去除:有效地使File看到它而不引发ENCODING_ERR。虽然这不是最佳解决方案,但此解决方法是有效的。

+0

“虽然我仍然没有解释为什么:导致本地文件插件失败”冒号(:)是一个重新存储的字符,不能在Windows系统的文件名中使用(但可以在Linux系统中使用)。也许为了兼容性,File插件保留Windows和Linux系统上的所有字符。 (文件名中禁止的字符列表)[https://stackoverflow.com/a/31976060/4511424] –