我正在使用Ionic 3中的文件API插件中的checkFile函数来检查文件在本地是否存在。承诺拒绝了以下错误:
FileError {代码: 5,消息:"ENCODING_ERR"}
从我在文件API的Mozilla文档上看到的情况来看,问题是“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);
});而这就是承诺失败的原因。这种情况的奇怪之处在于,我实际上试图在代码后面显示该图像,忽略了是否已被File.checkFile找到,而则显示。
在HTML模板中,我稍后使用:
<img [src]="imgUrl">其中imgUrl是使用以下方法设置的:
this.imgUrl = this.file.dataDirectory + '/' + "File:Icon Portrait Abel.png";因此,图像存在并在被WebView调用时正确显示,但是本地文件插件告诉我URL格式错误,即使在我看来,它似乎是完全相同的URL。这就是我被困的地方,我不知道如何改变代码才能工作。应该以不同的方式使用checkFile吗?另外,一个更精确的失败原因会有所帮助,但我得到的只有ENCODING_ERR,我不知道URL的实际部分看起来有什么问题。
发布于 2017-08-30 07:18:06
在查看了类似的案例之后,我没有找到任何解决方案,也没有找到关于这个具体案例的文档。但是在试验不同的值时,我发现了导致这个错误的原因--::。是的结肠。文件名中的一个。
虽然我仍然无法解释为什么:会导致原生File插件失败,而不会导致web视图失败,但是从文件名中删除:实际上可以让File在不引发ENCODING_ERR的情况下看到它。虽然这不是一个最佳解决方案,但这种解决办法是有效的。
发布于 2019-02-28 14:38:30
在我的例子中,我让"File:///“进入了路线,现在它开始工作了。
发布于 2019-10-07 20:16:44
所有的答案都不能解决我的问题。非常简单,我使用错误的目录在iOS中保存了一个文件。我使用的是“缓存”,但一直得到错误。
我换到
this.file.tempDirectory;而且起作用了!
https://stackoverflow.com/questions/45910519
复制相似问题