站长之家端口扫描,wordpress网页加入音乐页面,东营港新闻最新消息,wordpress邮件找客户端Multer 是一个 node.js 中间件#xff0c;用于处理multipart/form-data 类型的表单数据#xff0c;它主要用于上传文件。它是写在 busboy 之上的所以非常高效。前面我们已经知道了怎样利用express提供的静态资源处理中间件express.static()处理用户请求静态资源文件(图片, js…Multer 是一个 node.js 中间件用于处理multipart/form-data 类型的表单数据它主要用于上传文件。它是写在 busboy 之上的所以非常高效。前面我们已经知道了怎样利用express提供的静态资源处理中间件express.static()处理用户请求静态资源文件(图片, js, css等) 接下来学习如何处理用户上传文件, 编写处理上传文件的接口 (以图片为例)下面就直接上代码
const http require(http);
const fs require(fs);
const path require(path);
const express require(express);
const multer require(multer);const app express();
app.use(express.json());//文件上传
//https://github.com/expressjs/multer
const storage multer.diskStorage({destination: (req, file, cb) {const uploadFile req.params[upload_file];const filename path.join(__dirname, ./upload/${uploadFile});fs.existsSync(filename) || fs.mkdirSync(filename);cb(null, filename);},filename: (req, file, cb) {console.log(file);let saveName req.params[saveName] || Date.now();let extName path.extname(file.originalname || .jpg);cb(null, saveName - Date.now() extName);}
});
const upload multer({ storage: storage });//express中间件的洋葱模型
app.use(/, (req, res, next) {console.log(根路由);next();console.log(根路由 洋葱穿透);
});app.use(/user, (req, res, next) {console.log(用户路由);next();console.log(用户路由 洋葱穿透);
});
//用户可以指定要保存在哪个文件夹(不存在则创建) 和 保存的文件名
app.use(/user/:upload_file/:saveName,(req, res, next) {console.log(上传路由);next();console.log(上传路由 洋葱穿透);},upload.array(file),(req, res, next) {console.log(req.headers[content-type], req.body);res.send({ msg: upload success ! });next();}
);const server http.createServer(app);
server.listen(3010, () {console.log(listening...);
});用postmen测试一下就可以啦, 注意请求的数据类型应该是multipart/form-data上面的代码还提到了express中间件的洋葱模型 输出顺序是: 根路由 用户路由 上传路由 上传路由 洋葱穿透 用户路由 洋葱穿透 根路由 洋葱穿透
这是express中间件的重要机制, 逻辑上比较像dom事件的捕获与冒泡阶段