@wisemen/nestjs-file-storage
v0.1.2
Published
This package provides NestJS integration to interact with various file storage providers.
Maintainers
Keywords
Readme
File Storage
This package provides NestJS integration to interact with various file storage providers.
Supported Providers
- Amazon S3
- Azure Blob Storage
Installation
npm install @wisemen/nestjs-file-storageBasic Usage
- Import the
FileStorageModuleinto your NestJS module.
import {
FileStorageModule,
FileStorageProvider,
} from "@wisemen/nestjs-file-storage";
import { Module } from "@nestjs/common";
import { ConfigModule, ConfigService } from "@nestjs/config";
@Module({
imports: [
FileStorageModule.forRootAsync({
imports: [ConfigModule],
inject: [ConfigService],
useFactory: (configService: ConfigService) => ({
provider: FileStorageProvider.AWS_S3,
config: {
bucketName: configService.getOrThrow("S3_BUCKET"),
region: configService.get("S3_REGION", "nl-ams"),
accessKeyId: configService.getOrThrow("S3_ACCESS_KEY"),
secretAccessKey: configService.getOrThrow("S3_SECRET_KEY"),
endpoint: configService.getOrThrow("S3_ENDPOINT"),
},
}),
}),
],
providers: [MyService],
})
export class SomeModule {}- Inject the
FileStorageServiceinto your service to interact with the file storage.
import { Injectable } from "@nestjs/common";
import { FileStorageService } from "@wisemen/nestjs-file-storage";
import { Readable } from "stream";
@Injectable()
export class MyService {
constructor(private fileStorage: FileStorage) {}
async upload(key: string, content: Buffer): Promise<void> {
await this.fileStorage.upload(key, content);
}
async uploadStream(key: string, stream: Readable): Promise<void> {
await this.fileStorage.upload(key, stream);
}
}Features
- Create temporary upload/download URLs
- Upload file using buffers or streams
- Download file
- Delete file
