Когда вы думаете о 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/
. Функция имени файла дает каждому файлу уникальное имя, добавляя текущую дату и время к имени поля.