🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[multer文档](https://github.com/expressjs/multer/blob/master/doc/README-zh-cn.md) ~~~ //引入这个中间件实现文件上传 const multer = require('multer'); ~~~ ~~~ //file.html <form action="http://localhost:8080/" method="post" enctype="multipart/form-data"> 文件:<input type="file" name="file"/><br> <input type="submit" value="上传"> </form> ~~~ ~~~ //file.js const express = require("express"); const bodyParser = require('body-parser'); const multer = require('multer'); const fs = require('fs'); const pathLib= require('path'); //讲文件放在这个路径 var objMulter = multer({dest:'./www/assets/'}); const server = express(); // server.use(bodyParser.urlencoded({extended:false})) server.use(objMulter.any()); server.post('/',function(req,res){ var newName = req.files[0].path+pathLib.extname(req.files[0].originalname); fs.rename(req.files[0].path,newName,function(err){ if(err){ res.send("上传失败") }else{ res.send('成功') } }) /* 1.获取原始的扩展名 2.重命名 */ }) server.listen(8080); ~~~ ## 1.body-parser和multer的区别 ~~~ body-parser 解析post的数据 multer 解析post文件 ~~~ - body-parser ~~~ //表单的enctype值为以下的值,则用body-parser解析 <form action="" method="post" enctype="application/x-www-form-urlencoded"></form> //使用 server.use(bodyParser.urlencode({extended:false})); //req.body读取数据 ~~~ - multer ~~~ //表单的enctype值为以下的值,则用multer解析 <form action="" method="post" enctype="multipart/form-data"></form> const pathLib = require('path'); //multer使用相对复杂 1.生成一个multerObj指定文件存放的地址 var multerObj = multer({dest:"./www/static"}) 2.指定上传的文件类型 server.use(multerObj.any()); 3.req.files读取数据 server.use(function(req,res){} req.files[0].originalname //原始的文件名 req.files[0].path //文件路径 //4.把文件扩展名加上 var newName = req.files[0].path+pathLib.extname(req.files[0].originalname); //5.更改文件名 fs.rename(req.files[0].path,newName,function(err){ if(err){ res.send("上传失败") }else{ res.send('成功') } }) ) ~~~