Multer 是一个 node.js 中间件,用于处理 multipart/form-data
类型的表单数据,它主要用于上传文件。它是写在 busboy 之上非常高效。
使用示例
后端
- 在router里面做如下配置
const multer = require('multer');
const result = require('../util/result');
let storage = multer.diskStorage({
//设置上传后文件路径,uploads文件夹会自动创建。
destination: function (req, file, cb) {
cb(null, './uploads')
},
//给上传文件重命名,获取添加后缀名
filename: function (req, file, cb) {
let fileFormat = (file.originalname).split(".");
let filename = file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]
cb(null, filename);
}
});
let upload = multer({
storage: storage
});
在对应路由controller做如下使用:
//提交数据
//这个地方的upload.single('XXXX'),XXX是对应的前端input框,上传文件的name
router.post('/', upload.single('avatar'), (req, res) => {
console.log(req.file);
//如果文件上传成功,获取文件的名字存入数据库
if (req.file) {
let file=req.file;
let fileFormat = (file.originalname).split(".");
let filename = file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1];
console.log(filename);
res.status(200).json(result(0,'上传文件成功'),{
filename:filename
})
}
});
前端:
<form method="post" enctype="multipart/form-data">
<input type="file" name="avatar" value="选择你上传的文件">
<input type="submit">
</form>