gpt4 book ai didi

javascript - 如何在快速验证器中验证文件输入?

转载 作者:行者123 更新时间:2023-12-04 15:26:43 26 4
gpt4 key购买 nike

我正在使用快速验证器进行验证,在我的代码中,名称和电子邮件等其他文本字段正在正确验证,但问题出在输入文件字段上。我想检查空文件。我是 express 的新 Lerner,任何人都可以帮助我。我的代码如下:

应用程序.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");
})

该代码适用于名称和电子邮件字段,但无论我是否选择图像 - 我仍然会收到有关它的验证错误。如何验证文件输入?我只是希望它是必需的。

最佳答案

Express 验证器不能直接验证文件。一种简单快捷的解决方案是使用 custom validator在另一个属性中。

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

关于javascript - 如何在快速验证器中验证文件输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62103035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com