Home

Awesome

<p align="center"> <a href="http://nestjs.com/" target="blank"><img src="http://kamilmysliwiec.com/public/nest-logo.png#1" alt="Nest Logo" /> </a> <a href="https://min.io" target="_blank"><img src="https://min.io/resources/img/logo.svg" width="380"></a> </p> <p align="center">Minio Module for Nest framework</p> <p align="center"> <a href="https://www.npmjs.com/package/nestjs-minio"><img src="https://img.shields.io/npm/v/nestjs-minio" alt="NPM Version" /></a> <a href="https://img.shields.io/npm/l/nestjs-minio"><img src="https://img.shields.io/npm/l/nestjs-minio" alt="Package License" /></a> <a href="https://www.npmjs.com/package/nestjs-minio"><img src="https://img.shields.io/npm/dw/nestjs-minio" alt="NPM Downloads" /></a> </p> <p align="center"> <a href="https://www.buymeacoffee.com/XbgWxt567" target="_blank"><img src="https://i.imgur.com/CahshSS.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;" ></a> </p>

Description

This's a nest-minio 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-minio

Initialize MinIO Client

You need five items in order to connect to MinIO object storage server.

ParamsDescription
endPointURL to object storage service.
portTCP/IP port number. This input is optional. Default value set to 80 for HTTP and 443 for HTTPs.
accessKeyAccess key is like user ID that uniquely identifies your account.
secretKeySecret key is the password to your account.
useSSLSet this value to 'true' to enable secure (HTTPS) access

Provide the credentials for minio module by importing it as :

import { Module } from '@nestjs/common';
import { NestMinioClientController } from './nest-minio-client.controller';
import { NestMinioModule } from '../nest-minio.module';

@Module({
  controllers: [NestMinioClientController],
  imports: [
    NestMinioModule.register({
      isGlobal: true,
      endPoint: 'play.min.io',
      port: 9000,
      useSSL: true,
      accessKey: 'Q3AM3UQ867SPQQA43P2F',
      secretKey: 'zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG',
    }),
  ],
})
export class NestMinioClientModule {}

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


 constructor(@Inject(MINIO_CONNECTION) private readonly minioClient) {}

Quick Start Example - File Uploader

This example program connects to an object storage server, makes a bucket on the server and then uploads a file to the bucket.

We will use the MinIO server running at https://play.min.io in this example. Feel free to use this service for testing and development. Access credentials shown in this example are open to the public.


import { Controller, Get, Inject } from '@nestjs/common';
import { MINIO_CONNECTION } from '../constants';
import {Client, InjectMinio} from 'minio';

@Controller()
export class NestMinioClientController {
 // use inject token
  constructor(@Inject(MINIO_CONNECTION) private readonly minioClient: Client) {}

  // or use inject decorator
  // constructor(@InjectMinio() private readonly minioClient: Client) {}

  @Get()
  index() {
    const file = '/tmp/app.zip';

    const metaData = {
      'Content-Type': 'application/octet-stream',
      'X-Amz-Meta-Testing': 1234,
      example: 5678,
    };
    // Using fPutObject API upload your file to the bucket europetrip.
    this.minioClient.fPutObject(
      'europetripxxx3',
      'app.zip',
      file,
      metaData,
      function(err, etag) {
        if (err) {
          return console.log(err);
        }
        console.log('File uploaded successfully.');
      },
    );
  }
}