@luoluopay/egg-minio
v1.0.0
Published
MinIO plugin for Egg.js
Downloads
12
Readme
egg-minio
在 Egg.js 中快速使用 MinIO 客户端的插件。
安装
npm i egg-minio在 Egg 项目中启用
在 config/plugin.js 中添加:
exports.minio = {
enable: true,
package: 'egg-minio',
};TypeScript 模板项目可在 config/plugin.ts 中这样写:
import { EggPlugin } from 'egg';
const plugin: EggPlugin = {
minio: {
enable: true,
package: 'egg-minio',
},
};
export default plugin;配置
在 config/config.default.js 中添加:
单客户端模式
exports.minio = {
client: {
endPoint: '127.0.0.1',
port: 9000,
useSSL: false,
accessKey: 'minioadmin',
secretKey: 'minioadmin',
region: 'us-east-1',
},
};TypeScript 模板项目可在 config/config.default.ts 中这样写:
import { EggAppConfig, PowerPartial } from 'egg';
export default () => {
const config = {} as PowerPartial<EggAppConfig>;
config.minio = {
client: {
endPoint: '127.0.0.1',
port: 9000,
useSSL: false,
accessKey: 'minioadmin',
secretKey: 'minioadmin',
region: 'us-east-1',
},
};
return config;
};多客户端模式
exports.minio = {
clients: {
default: {
endPoint: '127.0.0.1',
port: 9000,
useSSL: false,
accessKey: 'minioadmin',
secretKey: 'minioadmin',
region: 'us-east-1',
},
backup: {
endPoint: '127.0.0.1',
port: 9001,
useSSL: false,
accessKey: 'minioadmin',
secretKey: 'minioadmin',
region: 'us-east-1',
},
},
};使用示例
Controller 中上传文件
// app/controller/upload.js
'use strict';
const Controller = require('egg').Controller;
class UploadController extends Controller {
async putObject() {
const { ctx, app } = this;
const stream = await ctx.getFileStream();
const bucketName = 'demo-bucket';
const objectName = stream.filename;
await app.minio.putObject(bucketName, objectName, stream);
ctx.body = { success: true, objectName };
}
}
module.exports = UploadController;多客户端获取方式
const backupClient = app.getMinio('backup');挂载到 Application 的属性
app.minio: 默认 MinIO 客户端(单客户端时为唯一客户端;多客户端时为首个客户端)app.minioClients: 多客户端映射对象(仅多客户端模式下存在)app.getMinio(name): 获取指定名称客户端(仅多客户端模式下存在)
安装后 TypeScript 会自动识别 app.minio、app.minioClients 和 app.getMinio 的类型定义。
License
MIT
