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
- Host: GitHub
- URL: https://github.com/nestcrafts/nestjs-minio
- Owner: NestCrafts
- Created: 2019-11-13T05:39:01.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-11-14T14:46:22.000Z (11 months ago)
- Last Synced: 2025-05-15T13:00:27.721Z (5 months ago)
- Topics: bucket, hacktoberfest, javascript, minio, nest, storage-server
- Language: TypeScript
- Homepage:
- Size: 3.44 MB
- Stars: 83
- Watchers: 2
- Forks: 20
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Minio Module for Nest framework
## 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.');
},
);
}
}```