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

时间:2018-03-26 01:11:20

标签: javascript node.js 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

1 个答案:

答案 0 :(得分:0)

我认为这没关系:

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 }]);