@namatery/multer-minio
Version:
A simple storage engine for Multer to upload files on Minio storage.
83 lines (62 loc) • 3.38 kB
Markdown
<h1>Minio Storage-Engine For Multer</h1>
[](https://min.io)
A simple `Storage Engine` for [Minio][MinioGithub] to upload files there in the middleware level with [Multer][MinioGithub]. To write you own `Storage Engine` check out [this page][MulterStorageEngine].
## How to install it?
To use this package you can easily install it via _npm_:
```
npm install /multer-minio
```
## How to use it?
> **NOTE 1**: _multer-minio_ is just a storage engine for [Multer][MulterGithub] package so you need to first install it vie [this link][MulterNPM].
> **NOTE 2**: _multer-minio_ needs an instance of `Client` class to connect to [Minio][MinioGithub]. For more information see [Minio API Document][MinioAPIDocument].
### MinioStorageEngine
A a class that you can import it from `/multer-minio`:
```javascript
const { Client } = require('minio');
const { MinioStorageEngine } = require('@namatery/multer-minio');
const minioClient = new Client({
port: PORT,
endPoint: END_POINT,
accessKey: ACCESS_KEY,
secretKey: SECRET_KEY,
});
const options = {
path: '/path/in/bucket',
region: 'us-east-1',
bucket: {
init: true,
versioning: false,
forceDelete: false,
},
object: {
name: (req, file) => {
return `${new Date()}-${file.originalname}`;
},
useOriginalFilename: false,
},
};
const storage = new MinioStorageEngine(minioClient, 'test', options);
```
### Options
| Name | Description | Required | Default |
| -------------------------- | ------------------------------------------------------------- | -------- | --------- |
| path | The path of file in the bucket. | False | / |
| region | Region where the bucket is created. | False | us-east-1 |
| bucket.init | If `ture` the bucket is create if not exists. | False | False |
| bucket.versioning | Can be `Enabled` or `Suspended`. | False | False |
| bucket.forceDelete | If `true` objects will remove even if versioning was enabled. | False | False |
| object.name | Can be `null` or a function that return name of the object. | False | uuid |
| object.useOriginalFilename | If `true` name of the original file will be use. | False | False |
### Example
Checkout [this link][Example] to see a full example:
- [**Expressjs** & **Javascript**][ExpressJavascriptExample]
- [**Expressjs** & **Typescript**][ExpressTypescriptExample]
[comment]: <> (Links)
[MulterMinio]: https://github.com/alireza12prom/multer-minio
[MulterGithub]: https://github.com/expressjs/multer
[MulterNPM]: https://www.npmjs.com/package/multer
[MulterStorageEngine]: https://github.com/expressjs/multer/blob/master/StorageEngine.md
[MinioGithub]: https://github.com/minio/minio
[MinioAPIDocument]: https://min.io/docs/minio/linux/developers/javascript/API.html
[ExpressJavascriptExample]: ./example/express-javascript.js
[ExpressTypescriptExample]: ./example/express-typescript.ts