📜  Multer fileFilter 不起作用 (1)

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

Multer fileFilter不起作用

当使用 Multer 中间件来处理文件上传时,我们可能会遇到 fileFilter 不起作用的问题。这个问题通常可以分为以下两种情况:

  1. 文件上传未执行

如果文件上传并未执行,可能是因为 Multer 中间件未正确指定存储方式。确保以下代码中的 dest 属性已正确设置为所需的存储路径:

const multer = require('multer');

const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, 'uploads/')
  },
  filename: function (req, file, cb) {
    cb(null, file.originalname);
  }
});

const upload = multer({ storage: storage });

app.post('/upload', upload.single('file'), (req, res) => {
  res.send("File uploaded successfully");
});
  1. fileFilter 返回错误

如果文件上传执行了,但是 fileFilter 未按预期工作,可能是因为以下代码中的 fileFilter 函数未正确实现过滤逻辑:

const multer = require('multer');

const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, 'uploads/')
  },
  filename: function (req, file, cb) {
    cb(null, file.originalname)
  }
});

const fileFilter = function (req, file, cb) {
  if (file.mimetype !== 'image/png') {
    cb(new Error('File type is not allowed'));
  } else {
    cb(null, true);
  }
};

const upload = multer({ storage: storage, fileFilter: fileFilter });

app.post('/upload', upload.single('file'), (req, res) => {
  res.send("File uploaded successfully");
});

请确保该函数正确实现了所需的过滤逻辑。在上面的示例中,我们过滤了所有非 PNG 类型的文件。

希望这些提示能帮助你解决 Multer fileFilter 不起作用问题。