Как я могу проверить, отправил ли пользователь файл в форму ввода файла в формате html, когда пользователь отправляет форму?

Это метод app.post в файле index.js, который получит имя файла, и я хочу проверить, существует ли изображение, тогда имя изображения будет добавлено в файл, иначе этого не произойдет.

app.post('/addPost', upload.single('blogImage'), (req, res) => {

    //for the written content
    let data = req.body;
    data.blogImageName = req.file.filename;
    console.info(data);
    postContent(req.body);


});

Это html-форма

<form action = "/addPost" enctype = "multipart/form-data" method = "POST" class = "createPostForm">

      <div>
        <label for = "AddImage">Add Image for the blog : </label>
        <input type = "file" name = "blogImage" ><br>
      </div>

    <input type = "submit" value = "Add Post">


  </form>

если я отправлю форму без загрузки файла, выдаст ошибку.

Как я могу проверить, существует ли имя файла в запросе?

ты хотел проверить на сервере или в клиенте, из твоего вопроса не понятно

Jaromanda X 17.06.2024 13:04

Для загрузки файла вам понадобится пакет multer или express-fileupload. Вы хотите знать только, как проверить, отправлен ли пользователь файл, или вы также хотите знать весь процесс проверки и загрузки файла? Укажите, пожалуйста,

Subha 17.06.2024 13:16

Я хотел проверить на стороне сервера @JaromandaX

Vedica Gairola 17.06.2024 17:21

Я импортировал пакет multer. Я хочу проверить на стороне сервера, отправил ли пользователь изображение или нет. @Субха

Vedica Gairola 17.06.2024 17:24

@VedicaGairola, я опубликовал свой подробный ответ с объяснениями. Пожалуйста, проверьте и дайте мне знать ваш отзыв.

Subha 17.06.2024 18:44

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

WeDoTheBest4You 18.06.2024 11:24
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
6
80
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

добавить проверку

if (!req.file) { throw new Error("File is required"); }
return true;
Ответ принят как подходящий

Что ж, когда вы загружаете файлы с помощью multer, данные загруженного файла не сохраняются непосредственно в req.body, а multer прикрепляются file-data в request.file (для одного файла) и request.files (для нескольких/массивов файлов).

request.body содержит только text-fields.

Поэтому попробуйте этот код вместо существующего кода.

app.post('/addPost', upload.single('blogImage'), (req, res) => {

    let fileData = req.file ;

    if (!fileData)  //return `true` in case file is not submitted
    {
    ..... //you can redirect user or whatever you want
    }
    .....
    //you can do rest of the work regarding file-upload

});

Для получения дополнительной информации о multer вы можете перейти по ссылке ниже.

https://www.npmjs.com/package/multer

Другие вопросы по теме