📜  multer 中的限制大小 - Shell-Bash (1)

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

Multer 中的限制大小

Multer 是一个 Node.js 的中间件,用于处理 HTTP 请求中的 multipart/form-data 类型数据。Multer 允许上传文件并做出适当的限制,其中包括限制上传文件的大小。

如何使用 Multer 限制文件大小?

在使用 Multer 限制上传文件大小之前,我们需要在 Node.js 项目中安装 Multer。可以使用以下命令:

npm install multer

下面是一个使用 Multer 限制上传文件大小的示例:

const multer = require('multer');

const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'uploads')
  },
  filename: (req, file, cb) => {
    cb(null, file.fieldname + '-' + Date.now())
  }
});

const fileFilter = (req, file, cb) => {
  // 检查文件类型,如果不是 image/png 或 image/jpeg,则禁止上传
  if (file.mimetype === 'image/png' || file.mimetype === 'image/jpeg') {
    cb(null, true);
  } else {
    cb(null, false);
    return cb(new Error('只允许上传png和jpeg图像文件'));
  }
}

const upload = multer({
  storage: storage,
  limits: { fileSize: 1000000 }, // 限制文件大小 1 MB
  fileFilter: fileFilter
});

app.post('/upload', upload.single('image'), (req, res) => {
  res.send('文件已成功上传');
});

在上面的示例中,我们使用 limits 对象来限制上传文件的大小。在该示例中,我们限制上传文件的大小不超过 1 MB(即 fileSize: 1000000)。如果上传的文件大小超过 1 MB,则 Multer 将抛出一个错误。

总结

Multer 是 Node.js 中处理上传文件的一种中间件。在使用 Multer 时,可以使用 limits 对象轻松地限制上传文件的大小。为了保持代码的可读性,我们使用了一个 fileFilter 函数来对上传的文件类型进行检查。