📅  最后修改于: 2023-12-03 15:03:03.854000             🧑  作者: Mango
Multer是一个基于Node.js平台的文件上传中间件。它能够轻松、快捷的实现文件上传功能。Multer同时支持多文件上传,文件大小限制等功能,可大大简化开发者的工作。
通过npm安装Multer
npm install multer --save
const multer = require('multer');
// 上传文件的配置
const storage = multer.diskStorage({
// 存储目录
destination(req, file, cb) {
cb(null, './uploads/');
},
// 文件名称
filename(req, file, cb) {
cb(null, file.originalname);
},
});
// 上传中间件
const upload = multer({ storage: storage });
// 用户上传文件
router.post('/upload', upload.any(), (req, res, next) => {
// do something...
});
router.post('/upload', upload.array('file', 10), (req, res, next) => {
// do something...
});
使用限制选项可以控制上传文件的属性
// 单个文件大小限制、文件类型过滤
const upload = multer({
storage: storage,
limits: {
fileSize: 1024 * 1024,
files: 1,
},
fileFilter(req, file, cb) {
if (!file.originalname.match(/\.(jpg|jpeg|png|gif)$/)) {
return cb(new Error('只允许上传jpg或png文件!'));
}
cb(null, true);
},
});
如果上传过程中出错,您可以通过调用req.file
和req.files
中间件对象来取消上传过程。multer会自动清理上传的文件。
router.post('/upload', (req, res, next) => {
upload.any()(req, res, (err) => {
if (err) {
// 取消上传
req.files.forEach((file) => fs.unlinkSync(file.path));
return res.status(500).json({ message: err.message });
}
// do something...
});
});
Multer是一个快速、安全、简便的文件上传库,支持多文件上传、文件过滤和文件大小限制等功能,为程序员提供了简单易用的文件上传解决方案。