Как проверить ввод файла в валидаторе express? - PullRequest
2 голосов
/ 30 мая 2020

Я использую валидатор express для проверки, в моем коде другие текстовые поля, такие как имя и адрес электронной почты, проверяются правильно, но проблема связана с полем входного файла. Я хочу проверить пустой файл. Я новенький Лернер из express, помогите мне кем-нибудь. мой код ниже:

app. js

const express = require("express");
const path = require("path");
const bodyParser = require("body-parser");
const { check, validationResult } = require("express-validator");
const multer = require("multer");

var upload = multer({ dest: 'uploads/' })

const app = express();

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');


app.use(express.static(path.join(__dirname, 'public')));

app.use(bodyParser.urlencoded({ extended: false }));


app.use(bodyParser.json());

app.get("/", (req, res) => {
    res.render("./form");
});



app.post("/submitForm", upload.single('avatar'), [
    check('name')
        .notEmpty().withMessage("Name is required"),
    check('email')
        .notEmpty().withMessage("Email are required")
        .isEmail().withMessage("Plese enter a valid email address"),
    check('avatar')
        .notEmpty().withMessage("Profile Img is required")
], (req, res) => {
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
        console.log(errors);
        res.render("./form", {
            errors: errors.array()
        })
    }
})

app.listen(3000, (req, res) => {
    console.log("port listen on 3000");
})

Код работает для поля имени и адреса электронной почты, однако независимо от того, выберу ли я изображение или нет - я все равно получаю подтверждение ошибка об этом. Как я могу проверить ввод файла? Я просто хочу, чтобы это было необходимо.

1 Ответ

0 голосов
/ 21 июня 2020

Express валидатор не может проверять файлы напрямую. Одно простое и быстрое решение - использовать настраиваемый валидатор внутри другого свойства.

check('name')
    .not().isEmpty().withMessage("Name is required")
    // Here you check that file input is required
    .custom((value, { req }) => {
        if (!req.file) throw new Error("Profile Img is required");
        return true;
    }),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...