Когда вы думаете о Node.js, загрузка файлов может быть не первым, что приходит на ум. Но по мере того, как вы начинаете создавать сложные приложения, неизбежно возникает необходимость в работе с файлами. Сегодня мы собираемся разобраться с этим зверем, используя Multer, промежуточное ПО Node.js для обработки multipart/form-data, которое в основном используется для загрузки файлов.

Скажем, это было около трех лет назад, когда я работал над проектом для клиента. Им нужна была надежная система профилей пользователей с возможностью загрузки аватаров. Море библиотек и инструментов пронеслось перед моими глазами, но одна сияла среди остальных — Мултер. Теперь позвольте мне показать вам, как я работал над этой проблемой.

Предварительные требования: готовое экспресс-приложение

  • Node.js и npm: оба являются важными инструментами для разработки приложений Node.js. Вы можете скачать Node.js, который поставляется вместе с npm, с официального веб-сайта Node.js.
  • Приложение Express. Express — это быстрая, бескомпромиссная и минималистичная веб-инфраструктура для Node.js, которую мы будем использовать для настройки маршрутов API. Вам нужно будет настроить приложение.

Шаг 1: Установите и инициализируйте Multer

Ставим Мультер. Это так же просто, как запустить:

npm install --save multer

Установив Multer, вы можете потребовать его в своем файле проекта следующим образом:

const multer  = require('multer');

Шаг 2: Настройте Мультер

Multer мало что делает без небольшой настройки. Вот как это настроить:

const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, './uploads/');
  },
  filename: (req, file, cb) => {
    cb(null, file.fieldname + '-' + Date.now());
  },
});

const upload = multer({ storage: storage });

Этот код создает новый объект multer с механизмом diskStorage, который указывает Multer хранить наши файлы на диске в каталоге ./uploads/. Функция имени файла дает каждому файлу уникальное имя, добавляя текущую дату и время к имени поля.

Шаг 3: Используйте Multer в своем маршруте API