nodejs中path模块,提供了basename用于通过文件地址获取文件名。
path.basename('/Desktop/download/quux.png'); // quux.png
但是,basename只能处理普通名字,特殊字符将会转译。
path.basename('/Desktop/download/qu/u<x>qu\ux.png'); // qu:u<x>qu\\ux.png
如在mac下“/”转译成“:”,“\” 转译成“\\”.......
有的同学可能会说用正则replace,或者其他方法split等等......
以上方法也行,但是有一定的风险,不同的mac、windows电脑,可能会出现不同的结果,造成兼容问题,不可控。
使用dirname实现。
const dlpath = '/Desktop/download/qu/u<x>qu\ux.png';
const dirname = path.dirname(dlpath);
const dlname = dlpath.slice(dirname.length + 1); // qu/u<x>qu\ux.png
使用dirname直接拿到目录名地址,然后通过计算长度,截取地址中的文件名。
这个方法稳妥,已在项目中验证。
网友评论