我正在使用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('/').pop().toString();
将字符串按原样拆分或将HTML解码为未编码字符串的最佳方法是什么?
答案 0 :(得分:1)
嗯,拆分适用于多个角色,所以当你尝试时我不知道出了什么问题。
但是如果你可以使用jQuery,你也可以像这样解码html:
var htmlDecoded = $('<div />').html(htmlEncoded).text()
之后你可以分开&#39; /&#39;。
(我给的代码在内存中创建了一个div标签(它没有添加到DOM,网页),之后它设置了它的html,它会自动解码html实体。
编辑: 由于我不确定OP的问题是什么,而且由于声誉不佳而无法发表评论,我在此提出更多建议。
也许您调用拆分的变量实际上不是字符串对象。首先尝试转换为字符串:
var filename = filepath.toString().split('/');
其他选择是使用正则表达式,但我不知道究竟是什么解决了,但可能值得尝试。
var filename = filepath.toString().split(/F;/);
EDIT2:在Chrome v62和Node v6.11.4中经过测试和使用。