path 系统模块
磁盘路径:
编码:
windows: 'c:\user\admin\a.jpg'
mac: ~/desktop/1901
UI:
windows: c:\user\admin
mac: ~/desktop/1901
path.parse('c:\\wamp\\xx.png'); 磁盘路径(str -> obj)
{
root: 'c:\\', 盘符
dir: 'c:\\wamp', 目录
base: 'xx.png', 文件名
ext: '.png', 扩展名
name: 'xx' 文件,不含扩展名
}
path.join('磁盘路径1','磁盘路径2')
__dirname 魔术变量 返回当前文件所在的磁盘路径
path.dirname == __dirname 当前文件位置
path.resolve('磁盘路径1','磁盘路径n') 合并磁盘片段,右到左找根,左到右拼接,没有找到根,以当前文件路径为根
let path=require('path')//处理磁盘路径 转对象
let str ='c:\\user\\admin\\a.jpg';
let str2 ='~/desktop/1901';
// path.parse(str)→ Object
// console.log(path.parse(str))
// { root: 'c:\\',
// dir: 'c:\\user\\admin', 盘符
// base: 'a.jpg', 文件名
// ext: '.jpg', 拓展名
// name: 'a' } 名字不含拓展名
let str3='c\\user\\admin'
let str4='a.jpg'
// console.log(path.join(str3,str4))
// c\\user\\admin\a.jpg
// __dirname 返回当前模块所在的磁盘路径
// path.resolve('磁盘路径1','磁盘路径n')一个完整的磁盘路径
// console.log(path.join('public','img','a.text'))
//有问题,没有根符
// console.log(path.join(__dirname,'public','img','a.text'))
console.log(path.resolve(str3,str4))
`
multer: 文件上传
multer->文件名会随机->fs模块改名->path系统模块解析磁盘路径
文件上传:前端表单->后端接收到文件本身->保存到服务器上->给数据库记录文件一些信息->库返回给nodejs相关信息->nodejs返回给前端
前端: <input type=file enctype="multipart/form-data" name="fieldname"
后端:multer 接受 form-data编码数据
配置
let multer = require('multer'); 引入
let objMulter = multer({ dest: './upload' }); 实例化 返回 multer对象
dest: 指定 保存位置(存到服务器)
app.use(objMulter.any()); any 允许上传任何文件
req.files 数组
fieldname: 表单name名
originalname: 上传的文件名
encoding: 编码方式
mimetype: 文件类型
buffer: 文件本身
size:尺寸
destination: 保存路径
filename: 保存后的文件名 不含后缀
path: 保存磁盘路径+保存后的文件名 不含后缀
fs模块: 操作是异步的
fs.rename('当前文件','该后的文件名',(err)=>{});
`