0.2.10 • Published 6 months ago

@fleye-me/nestjs-storage-engine v0.2.10

Weekly downloads
-
License
-
Repository
github
Last release
6 months ago

Features

  • Upload files
  • Delete files uploaded
  • Resize Image
  • Resize and upload images
  • Upload files in different sizes

Index

Installation

npm i @fleye-me/nestjs-storage-engine

or

yarn add @fleye-me/nestjs-storage-engine

Getting Started

Async import using Google Cloud Storage config

Update app.module.ts with:

import { StorageEngineModule } from '@fleye-me/nestjs-storage-engine';

@Module({
  imports: [
    StorageEngineModule.registerAsync({
      imports: [ConfigModule],
      inject: [ConfigService],
      useFactory(config: ConfigService) {
        return {
          providerEngineName: 'gcp',
          gcp: {
            projectId: config.get('GOOGLE_CLOUD_PROJECT_ID'),
            credentialsKeyPath: config.get('GOOGLE_CLOUD_CREDENTIALS'),
            bucket: config.get('GOOGLE_CLOUD_BUCKET'),
          },
        };
      },
    }),
  ],
})

YOUR_GOOGLE_CLOUD_CREDENTIALS = path to your google service account file that gives you permission to upload files to a bucket

Update .env with:

# Storage engine
STORAGE_ENGINE=gcp # disk or gcp

# Google Cloud
GOOGLE_CLOUD_BUCKET=
GOOGLE_CLOUD_PROJECT_ID=
GOOGLE_CLOUD_CREDENTIALS=

Async import using Local Disk config

Update app.module.ts with:

import { StorageEngineModule } from '@fleye-me/nestjs-storage-engine';
import * as path from 'path'

@Module({
  imports: [
    StorageEngineModule.registerAsync({
      imports: [ConfigModule],
      inject: [ConfigService],
      useFactory(config: ConfigService) {
        return {
          providerEngineName: 'disk',
          disk: {
            // below is path to save files
            uploadsFolder: path.resolve(__dirname, '..', 'uploads'),
            serverStaticFilesBaseUrl: config.get('SERVER_STATIC_FILES_BASE_URL'),
          }
        };
      },
    }),
  ],
})

Update main.ts with:

import { NestFactory } from "@nestjs/core"
import * as path from "path"

const app = (await NestFactory.create) < NestExpressApplication > AppModule

app.useStaticAssets(path.join(__dirname, "..", "uploads"), {
  prefix: "/static/",
})

Update .env with:

# Storage engine
STORAGE_ENGINE=disk # disk or gcp
SERVER_STATIC_FILES_BASE_URL=http://localhost:8080/static

Using the service

import { StorageEngineService } from '@fleye-me/nestjs-storage-engine';

export class YourService {
  constructor(
    private storageService: StorageEngineService,
  ) {}
}

Upload files

async uploadFile(buffer: Buffer | string) {
    const fileResult = await this.storageService.uploadFile({
        filename: 'example',
        path: 'upload-example',
        buffer,
        mimeType: 'application/pdf',
      });

    return fileResult;
  }

Output

{
  "url": "https://storage.googleapis.com/example/upload-example/example.pdf",
  "filename": "example.pdf",
  "originalFilename": "example.pdf",
  "path": "upload-example"
}

Delete Files Uploaded

async deleteFile() {
    const deleteFile = await this.storageService.deleteFile({
        path: 'upload-example',
        filename: 'example.pdf',
      });

    return deleteFile;
  }

Output

true

Resize Image

async resizeImage(
  buffer: Buffer | string,
  ) {

    const fileResults = await this.storageService.resizeImage(
        {
          buffer: image,
        },
        {
          width: 600,
          height: 600,
        },
      ));

    return fileResults;
  }

Resize Image And Upload

import { SizeOptionsDto } from '@fleye-me/nestjs-storage-engine';

async resizeImageAndUpload(
  buffer: Buffer | string,
  sizes?: SizeOptionsDto[]
  ) {

    const fileResults = await this.storageService.resizeImageAndUpload({
        buffer,
        filename: 'example',
        mimeType: 'application/pdf',
        path: 'invoice',
      },
      [
        {
        width: sizes.width,
        height: sizes.height,
        }
      ]
      );

    return fileResults;
  }
0.2.9

8 months ago

0.2.10

6 months ago

0.2.7

2 years ago

0.2.5

2 years ago

0.1.9

2 years ago

0.1.8

2 years ago

0.1.7

2 years ago

0.1.6

2 years ago