使用 Node 和 Multer 处理多个不同文件的上传

Handling upload of multiple different files with Node and Multer

我一直在尝试使用 Multer 上传两个不同的文件(图像和 pdf),但我不知道如何在 fileFilter 中操作这些文件。我想检查文件类型和大小 - 哪个有效,然后获取 pdf 文件并将其存储在磁盘上,同时图像文件继续进行另一个处理图像处理的功能。 我是新手,尝试了很多指南,但没有一个显示这种情况。

预先感谢您的帮助。

Multer 和路由器的代码。还是有点粗糙,还请大家多多包涵

// multer configuration
const upload = multer({
  storage: multer.memoryStorage(),

  fileFilter (req, files, callback) {
    const ext = path.extname(files.originalname);
    if (ext !== '.png' && ext !== '.jpg' && ext !== '.jpeg' && ext !== '.pdf') {
      return callback(new Error('Only images and pdf files allowed'));
    }
    callback(null, true);
  },
  limits: {
    fileSize: 5242880,
  }

  }).fields([{ name: 'main image', maxCount: 1 }, { name: 'info packs', maxCount: 1 }]);

// router
router.post('/', upload, controller.addNewImage);enter code here

我觉得还可以:

const upload = multer({
  storage: multer.memoryStorage(),

  fileFilter (req, files, callback) {
    const ext = path.extname(files.originalname);
    const allowed = ['.png', '.jpg', '.jpeg', '.pdf'];
    if (allowed.includes(ext)) {
      callback(null, true);
    } else {
      callback(null, false); // handle error in middleware, not here
    }
  },
  limits: {
    fileSize: 5242880,
  }

  }).fields([{ name: 'main image', maxCount: 1 }, { name: 'info packs', maxCount: 1 }]);