A NestJS module to easily integrate the ImgBB API for uploading images to ImgBB and retrieving the URLs of the uploaded images.
This module provides a simple service and controller to upload images to ImgBB directly from your NestJS application.
- Upload images to ImgBB via the API.
- Easy integration with NestJS projects.
- Support for image uploads via HTTP POST requests.
- Configurable options for API key and additional settings.
To use the imgbb-nestjs
module in your NestJS project, follow these steps:
-
Install the module via npm:
npm install imgbb-nestjs
-
Install the required dependencies for
multer
(for file uploads):npm install @nestjs/platform-express multer
-
Import the
ImgbbModule
in your NestJSAppModule
and configure it with options:import { Module } from '@nestjs/common'; import { ImgbbModule } from 'imgbb-nestjs'; @Module({ imports: [ ImgbbModule.forRoot({ apiKey: 'YOUR_IMGBB_API_KEY', }), ], }) export class AppModule {}
Replace
'YOUR_IMGBB_API_KEY'
with your actual ImgBB API key. You can also pass additional options likemaxSize
andexpiration
based on your use case.
Once the module is set up, you can use it in your controllers.
import {
Controller,
Post,
UploadedFile,
UseInterceptors,
} from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';
import { ImgbbService } from 'imgbb-nestjs';
@Controller()
export class AppController {
constructor(private readonly imgbbService: ImgbbService) {}
@Post('upload')
@UseInterceptors(FileInterceptor('image'))
async uploadImage(@UploadedFile() file: Express.Multer.File) {
if (!file) {
throw new Error('No image uploaded');
}
const result = await this.imgbbService.uploadImage(file.buffer, {});
return result;
}
}
import {
Controller,
Post,
UploadedFile,
UseInterceptors,
} from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';
import { ImgbbService } from 'imgbb-nestjs';
@Controller()
export class AppController {
constructor(private readonly imgbbService: ImgbbService) {}
@Post('upload')
@UseInterceptors(FileInterceptor('image'))
async uploadImage(@UploadedFile() file: Express.Multer.File) {
if (!file) {
throw new Error('No image uploaded');
}
const options = {
name: 'Custom Image Name',
expiration: 3600, // 1 hour (3600 seconds)
};
const result = await imgbbService.uploadImage(imageBuffer, options);
return result;
}
}
- POST
/upload
: Uploads an image to ImgBB.
To test the uploadImage
endpoint, use the following curl
command:
curl --location --request POST 'http://localhost:3000/upload' \
--form 'image=@"/path/to/your/image.jpg"'
Replace "/path/to/your/image.jpg"
with the path to the image file you want to upload.
The ImgbbModule.forRoot()
method accepts the following options:
apiKey
: Your ImgBB API key (required).options
(optional): Additional configuration options for the upload.maxSize
(optional): Maximum allowed image size in bytes. Default is unlimited.expiration
(optional): The expiration time of the uploaded image link in seconds. Default is 0 (no expiration).
This project is licensed under the MIT License - see the LICENSE file for details.