файл все еще загружается с multer даже после неудачной проверки формы - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть форма для добавления продукта, которая позволяет пользователю вводить название продукта, описание и т. Д., А также позволяет загружать изображения.

В моем файле app.js, который является моей точкой входа, у меня есть:

const fileStorage = multer.diskStorage({
    destination: (req, file, cb) => {
      cb(null, 'uploads');
    },
    filename: (req, file, cb) => {
       cb(null, new Date().toISOString() + '-' + file.originalname);
    }
  });


  const fileFilter = (req, file, cb) => {
    if (
      file.mimetype === 'image/png' ||
      file.mimetype === 'image/jpg' ||
      file.mimetype === 'image/jpeg'
    ) {
      cb(null, true);
    } else {
      cb(null, false);
    }
  };

app.use(multer({ storage: fileStorage , fileFilter: fileFilter, limits: { fileSize: 100000} }).single('image'));

Вот мой контроллер:

exports.postAddListing = (req, res, next) => {
    const title = req.body.title;
    const category = req.body.category;
    const description = req.body.description;
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
        return res.status(422).render('account/add-listing', {
            pageTitle: 'Add Item',
            path: '/account/add-listing',
            errorMessage: errors.array(),
            successMessage: null,
            oldInput: {
                title: title,
                description: description
            }
        });
    }

    const image = req.file;
    const imageUrl = image.path;

    const product = new Product({
        title: title,
        category: category,
        description: description,
        userId: req.user,
        datePosted: Date.now(),
        imageUrl: imageUrl
    });
    product.save()
    .then(result => {
        const successMessage = req.flash('success', 'Item sucessfully added');
        res.redirect('/account/add-listing');
    })
    .catch(err => console.log(err));
};

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...