Skip to content

hodfords-solutions/nestjs-storage

Folders and files

NameName
Last commit message
Last commit date
Sep 23, 2024
Aug 26, 2024
Feb 10, 2025
Nov 1, 2024
Jan 13, 2024
Nov 2, 2022
Sep 23, 2024
Nov 2, 2022
Jan 13, 2024
Sep 9, 2024
Sep 21, 2024
Sep 26, 2024
Mar 17, 2025
Mar 17, 2025
Sep 22, 2024
Nov 2, 2022
Nov 2, 2022

Repository files navigation

Nest Logo

Nestjs-Storage provides a powerful filesystem abstraction. The Nestjs-Storage integration provides simple drivers for working with local filesystems, Amazon S3, Azure. Even better, it's amazingly simple to switch between these storage options between your local development machine and production server as the API remains the same for each system.

Installation πŸ€–

To begin using it, we first install the required dependencies.

npm install @hodfords/nestjs-storage

Configuration πŸš€

To activate storage, import the StorageModule into the root AppModule and run the forRoot() static method as shown below:

Azure configuration:

import { Module } from '@nestjs/common';
import { StorageModule } from '@hodfords/nestjs-storage';

@Module({
    imports: [
        StorageModule.forRoot({
            account: {
                name: env.AZURE.ACCOUNT_NAME,
                key: env.AZURE.ACCOUNT_KEY,
                containerName: env.AZURE.CONTAINER_NAME,
                expiredIn: env.AZURE.SAS_EXPIRED_IN
            },
            disk: 'azure'
        })
    ],
})
export class AppModule {}

Aws S3 configuration:

import { Module } from '@nestjs/common';
import { StorageModule } from '@hodfords/nestjs-storage';

@Module({
    imports: [
        StorageModule.forRoot({
            account: {
                name: env.AWS.API_KEY,
                key: env.AWS.API_SECRET,
                containerName: env.AWS.BUCKET,
                expiredIn: env.AZURE.SAS_EXPIRED_IN,
                region: env.AWS.REGION
            },
            disk: 's3'
        })
    ],
})
export class AppModule {}

Driver Prerequisites:

  • Azure: npm install @azure/storage-blob
  • Aws S3: npm install @aws-sdk/client-s3 @aws-sdk/lib-storage @aws-sdk/s3-request-presigner

Usage πŸš€

Inject storage instance into your service or controller and use it as shown below:

import { StorageService } from "@hodfords/nestjs-storage";

@Injectable()
export class AppService implements OnModuleInit {

    constructor(private storageService: StorageService) {
    }
}

Delete file

The delete method accepts a single filename

await this.storageService.deleteFile('path/to/file');

This method may throw an exception if the file does not exist. You can ignore this exception by using the deleteIfExists method.

await this.storageService.deleteIfExists('path/to/file');

License

This project is licensed under the MIT License