/nestjs-cloudinary

Cloudinary module with sharp package for transformations

Primary LanguageTypeScriptMIT LicenseMIT

Nest Logo

Cloudinary Module for Nest framework

NPM Version Package License NPM Downloads

Buy Me A Coffee

Description

This's a nest-cloudinary module for Nest. This quickstart guide will show you how to install the client SDK and execute an example JavaScript program. For a complete list of APIs and examples, please take a look at the JavaScript Client API Reference documentation.

This document assumes that you have a working nodejs setup in place.

Installation

$ npm i --save nestjs-cloudinary

Initialize cloudinary Client

Provide the credentials for cloudinary module by importing it. More options can be passed as per the cloudinary documentation.

import { Module } from '@nestjs/common';
import { CloudinaryModule } from 'nestjs-cloudinary';

@Module({
	imports: [
		CloudinaryModule.forRootAsync({
			imports: [NestConfigModule],
			useFactory: (configService: ConfigService) => ({
				isGlobal: true,
				cloud_name: configService.get('cloudinary.cloudName'),
				api_key: configService.get('cloudinary.apiKey'),
				api_secret: configService.get('cloudinary.apiSecret'),
			}),
			inject: [ConfigService],
		}),
	],
})
export class NestCloudinaryClientModule {}

Then you can use it in the controller or service by injecting it in the controller as:

import { CloudinaryService } from 'nestjs-cloudinary';

constructor(private readonly cloudinaryService: CloudinaryService ) {}

Quick Start Example - File Uploader

This example program connects to cloudinary storage server then uploads a file.

import { Controller, Get, Inject } from '@nestjs/common';
import { CloudinaryService } from 'nestjs-cloudinary';

@Controller()
export class NestCloudinaryClientController {
	constructor(private readonly cloudinaryService: CloudinaryService) {}
	@Post('upload')
	@UseInterceptors(FileInterceptor('file'))
	async uploadFile(@UploadedFile() file: Express.Multer.File) {
		return this.cloudinaryService.upload(file);
	}
}