2017-10-24 19 views
0

ExpressとGoogle Datastoreを使用してNodeJSアプリケーションを作成しています。私は、UNIXパスからファイル名を取得しようとしています。パスは、データベースにHTMLエンコード形式で格納されます。HTMLエンコードされたUNIXパスからのファイル名の削除

ここでパス未エンコードです:ここで

/toplevel/example/text123.txt 

は、パスがデータベースHTMLエンコード形式で保存されている方法は次のとおりです。パスはHTMLエンコードされているので

/toplevel/example/test123.txt 

、このラインが機能していないが、 。

let filename_only = requested_filepath_unescaped.split('/').pop().toString(); 

私もエンコードされた文字によって分割を試みたが、それはどちらか動作しません(分割は複数の文字では動作しないので、おそらく?)

let filename_only = requested_filepath_unescaped.split('&#x2F').pop().toString(); 

分割するいずれかの最良の方法は何ですかそのままの文字列、またはエンコードされていない文字列にHTMLのコードを戻しますか?

答えて

1

スプリットは複数の文字で動作するので、試してみると何がうまくいかないのか分かりません。あなたは「/」に分割することができます。その後

var htmlDecoded = $('<div />').html(htmlEncoded).text() 

:あなたはjQueryのを使用することができるかどう

しかし、あなたはまた、このようなHTMLをデコードすることができます。

(私が与えたコードがメモリにdivタグを作成します(これは自動的にHTMLエンティティをデコードすることのHTMLを、設定した後、それは、DOM、ウェブページ)に追加されません。

EDIT : OPの問題点がわかりませんし、評判が低いためコメントできませんので、ここでいくつか提案してください。

スプリットオンと呼ばれる変数は実際には文字列オブジェクトではないかもしれません。文字列に最初に変換:

var filename = filepath.toString().split('&#x2F;'); 

他のオプションは、正規表現を使用することですが、私は正確にそれを解決するか分からないが、試してみる価値があるかもしれません。

var filename = filepath.toString().split(/&#2F;/); 

EDIT2:Chrome v62とノードv6.11.4で動作確認済みです。

+0

私はこの分割( '&#x2F')のように試してみるとなぜうまくいかないのでしょうか?私はそのオプションを探求し続けます。また、バックエンドでNodeJSを使用しているため、このシナリオではJQueryは関係ありません。ありがとう! – pengz

+0

最初の文字列に変換すると、私は正しい方向に向いてくれてありがとう! – pengz

関連する問題