2017-08-28 7 views
1

Ionic 3でcheckFile function from File API pluginを使用して、ファイルがローカルに存在するかどうかを確認しています。Ionic 3 Native:ファイル:{code:5、message: "ENCODING_ERR"}

FILEERROR {コード:5、メッセージ: "ENCODING_ERR"}約束は次のエラーで拒否し、私はMozilla Docs of the File APIに表示されるものと

、問題は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の実際の部分がどのように不正な形になっているのか分かりません。

+0

ここから「this.file.dataDirectory」の値を取得しますか?そのコードも表示できますか? – Sampath

+0

'this.file'はクラスのコンストラクタに注入され、それはIonic Native APIの' File'クラスです。したがって、 'dataDirectory'はhttps://ionicframework.com/docs/native/file/#dataDirectory –

答えて

2

同様のケースを調べたところ、この特定のケースについての解決策もドキュメントも見つかりませんでした。しかし、さまざまな値を試しながら、私はこのエラーの原因を見つけました::。はい、コロンです。ファイル名に存在するもの。:は、ファイル名から:を削除、失敗するネイティブFileプラグインが、なしのWebビューを引き起こし、なぜ私はまだについて何の説明を持っていませんが

は効果的ENCODING_ERRを上昇させずにそれを見るためにFileすることができます。これは最適な解決策ではありませんが、この回避策は効果的です。

+0

です。なぜなら、理由についてはまだ説明していませんが、ネイティブファイルプラグインが失敗する原因になります。コロン(:)は、 Windowsシステムでファイル名に使用することはできません(ただし、Linuxシステムで使用できます)。互換性のため、FileプラグインはWindowsとLinuxの両方のシステムですべての文字を予約していました。 (ファイル名で禁止されている文字のリスト)[https://stackoverflow.com/a/31976060/4511424] –

関連する問題