nodejs basename特殊字符处理

nodejs中path模块,提供了basename用于通过文件地址获取文件名。

path.basename('/Desktop/download/quux.png'); // quux.png

但是,basename只能处理普通名字,特殊字符将会转译。

path.basename('/Desktop/download/qu/uqu\ux.png'); // qu:uqu\\ux.png

如在mac下“/”转译成“:”,“\” 转译成“\\”.......

有的同学可能会说用正则replace,或者其他方法split等等......

以上方法也行,但是有一定的风险,不同的mac、windows电脑,可能会出现不同的结果,造成兼容问题,不可控。

使用dirname实现。

const dlpath = '/Desktop/download/qu/uqu\ux.png';

const dirname = path.dirname(dlpath);

const dlname = dlpath.slice(dirname.length + 1); // qu/uqu\ux.png

使用dirname直接拿到目录名地址,然后通过计算长度,截取地址中的文件名。

这个方法稳妥,已在项目中验证。

你可能感兴趣的:(nodejs basename特殊字符处理)