Ionic 3 Native:文件:{code:5,message:"ENCODING_ERR"}

Kew*_*sse 5 android typescript ionic-framework ionic3

我正在使用Ionic 3中的File API插件中的checkFile函数来检查文件是否存在于本地.Promise拒绝以下错误:

FileError {code:5,message:"ENCODING_ERR"}

从我在文件APIMozilla文档中看到的,问题是"URL格式错误".但是,我不知道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);
});
Run Code Online (Sandbox Code Playgroud)

这就是失败的承诺.这种情况的奇怪之处在于我实际上试图在代码中稍后显示该图像,忽略File.checkFile是否找到它并显示图像.

在HTML模板中,我稍后使用:

<img [src]="imgUrl">
Run Code Online (Sandbox Code Playgroud)

在哪里imgUrl设置使用:

this.imgUrl = this.file.dataDirectory + '/' + "File:Icon Portrait Abel.png";
Run Code Online (Sandbox Code Playgroud)

因此,当WebView调用时,图像存在并正确显示,但是Native File插件告诉我URL格式错误,即使对我来说它似乎是完全相同的URL.这就是我被困住的地方,我不知道要改变什么代码才能工作.应该checkFile以不同的方式使用?另外,更准确的失败原因会有所帮助,但我得到的只是ENCODING_ERR,我不知道URL的实际部分看起来有多么错误.

Kew*_*sse 12

在查看类似案例后,我找不到有关此特定案例的解决方案或文档.但在尝试不同的值时,我发现了导致此错误的原因::.是的,结肠.文件名中存在的那个.

虽然我仍然没有解释为什么 :导致本机File插件失败而不是Web视图,但是:从文件名中删除有效地允许File在不提高的情况下查看它ENCODING_ERR.虽然这不是最佳解决方案,但这种解决方法很有效.

  • "虽然我仍然没有解释原因:导致本机文件插件失败"冒号(:)是一个在Windows系统中无法在文件名中使用的已解析字符(但可以在Linux系统中使用).也许为了兼容性,File插件保留了Windows和Linux系统上的所有字符.(文件名中禁止的字符列表)[/sf/answers/2238324231/] (2认同)