介绍
Multer 是一个 node.js 中间件,用于处理 multipart/form-data
类型的表单数据,它主要用于上传文件。
注意: Multer 不会处理任何非 multipart/form-data
类型的表单数据。
使用
这里写个文件专门统一处理以下multer
const multer = require('multer');
const uuid = require('uuid');
// 创建 uploads 目录(如果不存在)
const fs = require('fs');
const path = require('path');
const uploadsDir = path.join(__dirname, '../public/uploads');
if (!fs.existsSync(uploadsDir)) {
fs.mkdirSync(uploadsDir);
}
// const upload = multer({ dest: 'uploads/' }); // 设置文件保存目录
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, path.join(__dirname, '../public/uploads'))
},
filename: function (req, file, cb) {
/*Appending extension with original name*/
// uuid.v4()
// 处理中文乱码问题
let fileOriginalName = Buffer.from(file.originalname, 'latin1').toString('utf-8');
file.originalname = fileOriginalName
cb(null, uuid.v4() + path.extname(file.originalname))
}
})
var upload = multer({ storage: storage });
module.exports = {
upload
}
接收单文件
router.post('/upload', upload.single('file'), ()=>{});
这里的file为请求时传递文件的参数名
通过req.file
获取接收的文件
接收多文件
router.post('/upload', upload.array('files'), ()=>{});
这里的files为请求时传递文件的参数名
通过req.files
获取接收的文件
可以通过传第二个参数确定只能传多少个,例如
router.post('/upload', upload.array('files',3), ()=>{});