• nodejs03中间件 -2 path、fs,multer


    path 系统模块

    		磁盘路径:
    			编码:
    				windows:  'c:\user\admin\a.jpg'
    				mac: ~/desktop/1901
    			UI: 
    				windows: c:useradmin
    				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\admina.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返回给前端
    				前端: 
    
    
    			后端: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)=>{});
    
    ******************** ``` let express=require('express') let multer=require('multer') //引入 类 let app=express() let fs=require('fs') let path=require('path')

    app.listen(3000)
    app.use(express.static("./public"))
    // 安装配置中间件
    var upload=multer({dest:'uploads/'})//实例化,工厂方法upload==实例
    app.use(upload.any()) //控制上传文件的类型,any是任意,text是只是文件
    // app.use('/reg',(req,res,next)=>{
    // console.log('files',req.files)
    // res.end()
    // })
    app.post('/reg',(req,res,next)=>{
    console.log('files',req.files)
    // 改名
    fs.renameSync('./uploads/'+req.files[0].filename,
    './uploads/'+req.files[0].filename+path.parse(req.files[0].originalname).ext)//uploads内会重新生成一个可以查看的完整的图片
    // 存库
    // 返值
    res.send({err:0,url:'http://localhost:3000/uploads/'+req.files[0].filename+path.parse(req.files[0].originalname).ext})
    // res.end()
    })//postman在form-data内写上传文件,会转存文件到uploads文件夹内(文件名随机)然后改名rename

  • 相关阅读:
    php验证码
    php上传
    ajax的用法 资料
    ajax如何使用
    AJAX
    基础概念梳理 :
    ICompare 可比较接口
    强类型 和弱类型 c#
    .ne 基础(2)
    .net 基础(一)
  • 原文地址:https://www.cnblogs.com/sansancn/p/11012841.html
Copyright © 2020-2023  润新知