@namatery/multer-minio
Version:
A simple storage engine for Multer to upload files on Minio storage.
83 lines (62 loc) • 3.3 kB
Markdown
<h1>Minio Storage-Engine For Multer</h1>
[](https://min.io)
A simple `Storage Engine` for [Minio][MinioGithub] to upload files to Minio at the middleware level with [Multer][MulterGithub]. To write your own `Storage Engine`, check out [this page][MulterStorageEngine].
## How to install
To use this package you can easily install it via _npm_:
```
npm install /multer-minio
```
## How to use
> **NOTE 1**: _multer-minio_ is just a storage engine for [Multer][MulterGithub], so you need to first install it via [this link][MulterNPM].
> **NOTE 2**: _multer-minio_ needs an instance of the `Client` class to connect to [Minio][MinioGithub]. For more information, see [Minio API Document][MinioAPIDocument].
### MinioStorageEngine
A class that you can import 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 the file in the bucket. | False | / |
| region | The region where the bucket is created. | False | us-east-1 |
| bucket.init | If `true`, the bucket is created if it does not exist. | False | False |
| bucket.versioning | Can be `Enabled` or `Suspended`. | False | False |
| bucket.forceDelete | If `true`, objects will be removed even if versioning was enabled. | False | False |
| object.name | Can be `null` or a function that returns the name of the object. | False | uuid |
| object.useOriginalFilename | If `true`, the name of the original file will be used. | False | False |
### Example
Check out [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