2017-08-28 143 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] –