<MyRusakov.ru />

WordPress 6 с Нуля до Гуру

WordPress 6 с Нуля до Гуру

Этот курс научит Вас созданию самых разных сайтов на самой популярной в мире CMS - WordPress. Вы увидите установку и настройку локального сервера, разбор каждой настройки, каждой кнопки и каждого пункта меню в панели WordPress.

Также Вы получите и всю практику, поскольку прямо в курсе с нуля создаётся полноценный Интернет-магазин, который затем публикуется в Интернете. И всё это прямо на Ваших глазах.

Помимо уроков к курсу идут упражнения для закрепления материала.

И, наконец, к курсу идёт ценнейший Бонус по тому, как используя ChatGPT и создавая контент для сайта, можно выйти на пассивный доход. Вы наглядно увидите, как зарегистрироваться в ChatGPT (в том числе, и если Вы из России), как правильно выбрать тему для сайта, как правильно генерировать статьи для него(чтобы они индексировались поисковыми системами) и как правильно монетизировать трафик на сайте.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

Загрузка нескольких файлов на сервер в ExpressJS

Загрузка нескольких файлов на сервер в ExpressJS

Продолжаем предыдущую статью, в которой рассказывалось как загрузить файл на сервер в ExpressJS. В данной статье мы рассмотрим как загрузить сразу несколько файлов на сервере в NodeJS.

Для данного примера создадим другой маршрут, позволяющий пользователям загружать несколько фотографий в одном запросе. Обратите внимание, чтобы получить полностью рабочий пример нужно обратиться к предыдущей статье.


app.post('/upload/photos', async (req, res) => {

  const basePath = './uploads/images/'; // папка,в которую будут попадать загруженные изображения
  const publicPrefix = '/images/'; // путь, по которому будут открываться изображения в браузере

  // расширения файлов, которые можно загрузить на сервер
  const allowedExtension = ['png', 'jpg', 'webp', 'gif'];

  try {
    // если в запросе для загрузки нет файлов, то возвращаем ответ с сообщением
    if (!req.files) {
      res.send({
        status: false,
        message: 'Вы не выбрали файлы для загрузки на сервер'
      });
    }
    else {
      const data = [];

      if (!req.files.uploadedPhotos) {
        res.send({
          status: false,
          message: 'Неправильный запрос. Список файлов должен быть представлен списком uploadedPhotos'
        });

        return;
      }

      // проходимся по массиву файлов, пришедших от клиента
      for (const key in req.files.uploadedPhotos) {
        const file = req.files.uploadedPhotos[key];


        // расширение файла
        const extension = file.name.substring(file.name.lastIndexOf('.') + 1);

        // проверяем тип файл по списку разрешенных
        if (!allowedExtension.includes(extension)) {
          delete file.data;

          res.send({
            status: false,
            message: `Файлы данного типа ${extension} нельзя загружать на сервер`,
            file
          });

          return;
        }

        // перемещаем файл в папку для загруженных картинок
        file.mv(basePath + file.md5 + '.' + extension);

        // заполняем массив с данными по каждому файлу
        data.push({
          name: publicPrefix + file.md5 + '.' + extension,
          oldName: file.name,
          extension,
          mimetype: file.mimetype,
          size: file.size
        });
      }

      // отправляем сообщение клиенту (браузеру, например)
      res.send({
        status: true,
        message: 'Все файлы загружены',
        data
      });
    }
  } catch (err) {
    console.log(err);
    res.status(500).send(err);
  }
});

Тестирование приложения

Теперь необходимо выполнить следующую команду в терминале из корневого каталога проекта, чтобы запустить приложение:

$ node index.js 

Эта команда запустит приложение на 5000-ом порте.

Далее показан пример тестирования данного API в программе Insomnia:

Тестирование API ExpressJS upload file

А чтобы сделать загруженные файлы общедоступными для пользователей Интернета, необходимо сделать каталог uploads статичным:

app.use('/images', express.static(__dirname + '/uploads/images'));

Теперь вы можете открыть загруженный файл непосредственно в браузере:

http://localhost:5000/images/274d66598b1944d30ee69e0b92234c1b.png

Ограничение на размер файла

Если необходимо ограничить размер файлов, загружаемых на сервер, то необходимо использовать параметр limits при конфигурировании мидлвара:

app.use(fileUpload({
    createParentPath: true,
    limits: { 
        fileSize: 5 * 1024 * 1024 * 1024 // 5MB - максимальный размер загружаемого файла
    },
}));

Таким образом, мы узнали, как загрузить один или несколько файлов в ExpressJS с помощью библиотеки express-fileupload, которое представляет собой простое в использовании промежуточное программное обеспечение для фреймворка ExpressJS.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.