path.basename(path[, ext])
path.basename() 方法会返回 path 的最后一部分。 尾部的目录分隔符会被忽略。
- path :string
- ext :string 可选的文件扩展名。
- 返回:string
返回: ‘文件.html’:
path.basename('/目录1/目录2/文件.html');
返回: ‘文件’:
path.basename('/目录1/目录2/文件.html', '.html');
尽管 Windows 通常以不区分大小写的方式处理文件名(包括文件扩展名),但是此函数不会这样。 例如, C:\文件.html 和 C:\文件.HTML 指向相同的文件,但是 basename 会将扩展名视为区分大小写的字符串:
返回: ‘文件’:
path.win32.basename('C:\\文件.html', '.html');
返回: ‘文件.HTML’:
path.win32.basename('C:\\文件.HTML', '.html');
如果 path 不是字符串、或给定了 ext 但不是字符串,则抛出 TypeError。
英雄案例后台-文件上传:
img: path.basename(files.img.path) ==> 截取图片路径的图片名
uploadFile: function (req, res) {
// 1.创建文件上传对象
let form = new IncomingForm()
// 2.添加必要的配置
// 2.1 设置编码,formidable也可 接收普通键值对,这个时候就有需要设置编码,如果只是上传文件,则不用设置
// form.encoding = 'utf-8'
// // 2.2 设置上传文件的存放路径,一定给一个全路径,否则报错
form.uploadDir = __dirname + '/public/images'
// // 2.3 设置是否保留文件的扩展名,默认不保留
form.keepExtensions = true
// 3.调用上传方法,实现文件上传
// form.parse(请求报文,回调函数)
// err:文件上传失败时的错误信息
// fields:接收到普通键值对--对象
// files:文件的相关信息,特别是上传成功后在服务器端的信息
form.parse(req, (err, fields, files) => {
if (err) {
console.log(err)
res.json({
code: 204,
msg: '文件上传失败'
})
} else {
res.json({
code: 200,
msg: '文件上传成功',
img: path.basename(files.img.path)
})
}
})
},