📜  multer - Javascript (1)

📅  最后修改于: 2023-12-03 15:03:03.854000             🧑  作者: Mango

Multer - 上传文件的Javascript库

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.filereq.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是一个快速、安全、简便的文件上传库,支持多文件上传、文件过滤和文件大小限制等功能,为程序员提供了简单易用的文件上传解决方案。