Проверка Multer с помощью joi - PullRequest
0 голосов
/ 22 апреля 2020

Я создал конечную точку для публикации и загрузки файла CSV для обработки в Node. Это работает нормально, но я пытаюсь выяснить, как проверить несколько вещей перед загрузкой файла.

Пример запроса:

{
    "test_doc": "/path/to/file/test.csv"
    "offset": [0,1]
}

Я хочу, чтобы форма требовала " test_do c "и принимать только CSV-файлы и иметь« смещение »необязательно

Схема для« смещения »работает, но я не уверен, как проверить файл с помощью multer, особенно перед его загрузкой .

Пример кода ниже

const upload = multer({ dest: "/tmp" });

router.post("/", upload.single("test_doc"), async (req, res) => {
    const schema = joi.object().keys({
        offset: joi.array().items(joi.number().min(-60).max(60)).min(1).max(2)
    });
});

1 Ответ

0 голосов
/ 22 апреля 2020

Вы можете использовать метод fileFilter для проверки типов файлов в Multer. Метод fileFilter - это встроенный метод, который поставляется с промежуточным программным обеспечением Multer:

const upload = multer({
    dest: "/tmp",
    fileFilter: (req, file, cb) => {
      if (file.mimetype == "text/csv" && file.fieldname === "test_doc") {
        cb(null, true);
      } else {
        cb(null, false);
        return cb(new Error('Invalid upload: fieldname should be test_doc and .csv format '));
      }
    }
  });
...