使用Node.js解析文件系统路径(可能带有符号链接)

时间:2014-10-15 00:00:13

标签: node.js

我需要一种方法来验证文件是否在特定路径下。如果路径为/var/www且文件为/var/www/something/something-else/file,则需要返回true。如果文件为/var/www/../../etc/passwd,我需要返回false

在PHP版本中,我通常使用一个名为realpath()的函数:

  

realpath()展开所有符号链接并解析对' /./',' /../'的引用;和额外的' /'输入路径中的字符并返回规范化的绝对​​路径名。

我在所需路径和完整文件路径上运行realpath(),然后确定所需路径是否是完全解析文件路径结果的子字符串。如果是,我会返回true

Node.js是否有实现相同目标的功能? path.resolve()让我走了一半,但没有处理文件系统中实际存在的任何符号链接。 fs.readlink()完全没有任何文档,因为我不会总是有符号链接,所以可能无法直接应用。

我必须遍历路径的每个部分,在我去的时候解析符号链接,还是有更规范的方法?

1 个答案:

答案 0 :(得分:10)

节点也有fs.realpath(),因此应该像在PHP中一样工作。