Как загружать изображения в Cloudinary с помощью NestJS

В этой статье я объясню, как использовать пакет Cloudinary с пользовательскими поставщиками NestJS. Вы можете найти пример в конце статьи.

Конфигурация проекта

  1. Сначала создайте проект с помощью 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



Спасибо, что прочитали, пожалуйста, дайте мне отзыв, была ли эта статья полезной или нет.