<MyRusakov.ru />

Разработчик игр на Unreal Engine

Разработчик игр на Unreal Engine

Этот комплект с нуля всего за 7 месяцев сделает Вас Unreal-разработчиком. И при этом учиться достаточно 1 час в день.

Начнёте Вы с основ программирования, постепенно перейдя к C++. Затем очень подробно изучите Unreal Engine, и после научитесь программировать на C++ в Unreal Engine. В конце создадите крупный проект на C++ в Unreal Engine для своего портфолио.

Комплект содержит:

- 416 видеоуроков

- 95 часов видео

- 1024 задания для закрепления материала из уроков

- 3 финальных тестирования

- 4 сертификата

- 12 Бонусных курсов

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

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

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

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

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

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

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

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

Как загрузить файл на сервер в ExpressJS

Как загрузить файл на сервер в ExpressJS

Современные веб-приложения позволяют пользователям загружать изображения и другие файлы. Возможность загрузки файлов является общим требованием при создании REST API в ExpressJS.

В этой статье мы рассмотрим, как выполнить загрузку и сохранение одного файла в NodeJS.

Установка

Сначала давайте создадим новое NodeJS приложение.

# создаем папку и переходим в нее
$ mkdir nodejs-upload-files && cd  nodejs-upload-files

# инициализируем новое nodejs приложение
$ npm init -y

# ставим зависимости
$ npm install express body-parser cors express-fileupload morgan lodash --save

Вот что делает каждый из вышеперечисленных пакетов:

  • express - Популярный NodeJS веб-фреймворк.
  • body-parser - (промежуточное программное обеспечение - мидлвар) разбирает тело входящего запроса и делает доступным его через свойство req.body.
  • cors - другой мидлвар для работы с CORS запросами (совместное использование ресурсов из разных источников).
  • express-fileupload - простое промежуточное программное обеспечение для загрузки файлов. Оно обрабатывает запросы на загрузку файлов на сервер, извлекает эти файлы, если они доступны, и делает их доступными в свойстве req.files.
  • lodash - Библиотека JavaScript, которая предоставляет служебные функции для массивов, чисел, объектов, строк и т.д.

Создаем ExpressJS сервер

После установки необходимых зависимостей приступим к созданию нашего сервера ExpressJS.


const express = require('express');
const fileUpload = require('express-fileupload');
const cors = require('cors');
const bodyParser = require('body-parser');
const crypto = require('crypto');
const _ = require('lodash');

const app = express();

// делаем доступными загрузку файлов
app.use(fileUpload({
    createParentPath: true
}));

// добавляем мидлвары
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));

// устанавливаем порт приложения
const port = process.env.PORT || 5000;

app.get('/', async (req, res) => {
  res.send({ message: 'Привет' })
});

// запускаем 
app.listen(port, () => 
  console.log(`Приложение на порту ${port}.`)
);

Загружаем файл

Теперь создадим маршрут, позволяющий пользователям загружать фотографии своего профиля.


app.post('/upload/profile-image', async (req, res) => {

  try {
    // если файлов нет
    if (!req.files) {
      // отправляем ответ, что нет файлов для загрузки
      res.send({
        status: false,
        message: 'Нет файлов для загрузки'
      });
    } else {
      // Используем название поля profile_image из html разметки для получения ссылки на загружаемый файл
      const avatar = req.files.profile_image;

      const filename = crypto.createHash('md5').update(avatar.name).digest('hex');

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

      // используем метод mv() для сохранения файла в папке ./user/avatars/
      avatar.mv('./user/avatars/' + filename + '.' + extension);

      // отправляем ответ
      res.send({
        status: true,
        message: 'Файл загружен',
        data: {
          name: filename,
          extension: extension,
          mimetype: avatar.mimetype, // тип картинки, как он пришел от клиента
          size: avatar.size
        }
      });
    }
  }
  catch (err) {
    // отправляем 500 код об ошибке
    res.status(500).send(err);
  }
});

Как работает мидлвар express-fileupload?

Он делает загруженные файлы доступными в свойстве req.files. Например, если вы загружаете файл с именем profile-image.jpg, а название поля для загрузки файла - profile_image, вы можете получить к нему доступ через свойство req.files.profile_image.

Объект profile_image будет содержать следующую информацию:

  • profile_image.name - Имя загруженного файла, т. е. profile-image.jpg
  • profile_image.mv - Функция для перемещения файла в другое место на сервере
  • profile_image.mimetype - Тип файла
  • profile_image.size - Размер файла в байтах
  • profile_image.data - Бинарное представление загруженного файла

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

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

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

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

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

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

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

  1. Кнопка:

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

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

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

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

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

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