使用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()完全没有文档,可能不会直接应用,因为我不会总是有符号链接。

我必须循环遍历路径的每一部分,边走边解析符号链接,还是有更规范的方法?

Node也有fs.realpath(),所以它的工作方式应该与PHP中的相同。

最新更新