Как загружать изображения в Cloudinary с помощью NestJS
В этой статье я объясню, как использовать пакет Cloudinary с пользовательскими поставщиками NestJS. Вы можете найти пример в конце статьи.
Конфигурация проекта
- Сначала создайте проект с помощью NestJS CLI:
nest new nest-cloudinary-example
2. Затем сгенерируйте модуль, поставщика и службу с помощью интерфейса командной строки NestJS:
nest generate module cloudinary nest generate provider cloudinary nest generate service clodinary
3. Установите пакеты Cloudinary и buffer-to-stream с сайта npmjs.com.
Реализация кода
4. Создайте файл в облачной папке с именем constants.ts
, этот файл содержит константу с именем Cloudinary
, которая используется в качестве токена внедрения поставщика.
5. В cloudinary.provider.ts
, вам нужно добавить этот код:
v2
: - это пространство имен, экспортированное из пакета Cloudinary.CLOUDINARY
: Константа, используемая в качестве токена внедрения нашего поставщика.CloudinaryProvider
: динамический провайдер, который инициализирует конфигурацию для подключения к вашей облачной учетной записи.- Свойства
cloud_name
,api_key
иapi_secret
взяты из вашей учетной записи Cloudinary.
6. Далее в cloudinary.service.ts
добавьте следующий код:
toStream
: Эта функция из пакета преобразования буфера в поток преобразует буфер в читаемый поток.uploadImage
: в этом методе используется функцияupload_stream
из пакета Cloudinary, для него требуется функция обратного вызова, чтобы проверить, было ли изображение успешно загружено, наконец, мы преобразуем буфер в читаемый поток и передаем канал в функцию загрузки.- Для этого метода требуется тип файла Multer, чтобы узнать больше об этом пакете и реализации, прочтите раздел загрузка файла в официальной документации NestJS. Но если вы хотите пропустить это, удалите тип параметра файла.
- Также, если у вас возникли проблемы с пространством имен Multer, просто установите пакет Multer types с сайта npmjs.com
7. После этого в cloudinary.module.ts
вставьте следующий код:
Пример
8. Наконец, вы можете импортировать этот модуль в другую часть вашего проекта:
9. Вот как вы можете воспользоваться услугой:
Пример репозитория Github
Спасибо, что прочитали, пожалуйста, дайте мне отзыв, была ли эта статья полезной или нет.