An open API service indexing awesome lists of open source software.

https://github.com/nestcrafts/nestjs-minio

Your favorite object storage with nestjs
https://github.com/nestcrafts/nestjs-minio

bucket hacktoberfest javascript minio nest storage-server

Last synced: 5 months ago
JSON representation

Your favorite object storage with nestjs

Awesome Lists containing this project

README

          


Nest Logo

Minio Module for Nest framework


NPM Version
Package License
NPM Downloads


Buy Me A Coffee

## Description
This's a [nest-minio](https://github.com/rubiin/nest-minio) module for [Nest](https://github.com/nestjs/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](https://docs.min.io/docs/javascript-client-api-reference) documentation.

This document assumes that you have a working [nodejs](http://nodejs.org/) setup in place.

## Installation

```bash
$ npm i --save nestjs-minio
```

## Initialize MinIO Client

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

| Params | Description |
| :------- | :------------ |
| endPoint | URL to object storage service. |
|port| TCP/IP port number. This input is optional. Default value set to ``80`` for HTTP and ``443`` for HTTPs.|
| accessKey | Access key is like user ID that uniquely identifies your account. |
| secretKey | Secret key is the password to your account. |
|useSSL |Set this value to 'true' to enable secure (HTTPS) access |

Provide the credentials for minio module by importing it as :

```javascript
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:

```javascript

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.

```js

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.');
},
);
}
}

```