从HTML编码的UNIX路径中删除文件名

时间:2017-10-24 19:51:26

标签: javascript html unix encoding

我正在使用Express和Google Datastore编写NodeJS应用程序。我试图从UNIX路径获取文件名。该路径以HTML编码格式存储在数据库中。

这里是未编码的路径:

/toplevel/example/text123.txt

以下是如何以数据库HTML编码格式存储路径:

/toplevel/example/test123.txt

由于路径是HTML编码的,因此该行无效。

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

我也尝试按编码字符进行拆分,但这也不起作用(也许是因为拆分不能处理多个字符?)

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

将字符串按原样拆分或将HTML解码为未编码字符串的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

嗯,拆分适用于多个角色,所以当你尝试时我不知道出了什么问题。

但是如果你可以使用jQuery,你也可以像这样解码html:

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

之后你可以分开&#39; /&#39;。

(我给的代码在内存中创建了一个div标签(它没有添加到DOM,网页),之后它设置了它的html,它会自动解码html实体。

编辑: 由于我不确定OP的问题是什么,而且由于声誉不佳而无法发表评论,我在此提出更多建议。

也许您调用拆分的变量实际上不是字符串对象。首先尝试转换为字符串:

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

其他选择是使用正则表达式,但我不知道究竟是什么解决了,但可能值得尝试。

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

EDIT2:在Chrome v62和Node v6.11.4中经过测试和使用。