Minio 是一个高性能的分布式对象存储服务,它与亚马逊 S3 兼容。
启动 docker 的 Minio 容器
首先,我们需要安装 docker 桌面端。
打开 Docker 桌面端,搜索 Minio 镜像:
填写信息:
- 容器名(name):自定义容器名称。
- 端口映射(port):将本地 9000 和 9001 端口映射到容器内。
- 数据卷(volume):挂载本地目录到容器内的数据目录,例如 /bitnami/minio/data。
- 环境变量:设置 MINIO_ROOT_USER 和 MINIO_ROOT_PASSWORD 作为登录凭据。
点击 run 运行镜像为容器。
访问 Minio 管理界面
- 访问 http://localhost:9001
- 输入之前设置的用户名和密码进入管理界面:
管理存储桶与文件
在管理界面中,可以创建和管理存储桶(bucket)和对象(object):
可以在这个桶中上传文件:
点击 share 就可以看到这个文件的 url:
带了很长一串密钥才能访问。
设置文件访问权限
默认情况下,文件访问权限不是公开的。您可以添加匿名访问规则以允许直接访问文件:
不带后面那串密钥也可以访问了:
使用 SDK 上传和下载文件
安装 Minio 包:
bash
npm install minio
代码:
javascript
var Minio = require('minio')
var minioClient = new Minio.Client({
endPoint: 'localhost',
port: 9000,
useSSL: false,
accessKey: 'your-accessKey',
secretKey: 'your-secretKey',
})
// 上传文件
function put() {
minioClient.fPutObject('bucket-name', 'object-name', 'file-path', function (err, etag) {
if (err) return console.log(err)
console.log('上传成功');
});
}
// 下载文件
function get() {
minioClient.getObject('bucket-name', 'object-name', (err, stream) => {
if (err) return console.log(err)
stream.pipe(fs.createWriteStream('output-file-path'));
});
}
// 调用函数
put();
get();
这里可以创建 accessKey:
所有 OSS 服务(如阿里云 OSS、Minio)其实都是相似的,因为它们都遵循 AWS 的 Simple Storage Service(S3)规范。
因此,无论使用哪家服务,其操作方式大致相同。
更多的 api 用法可以看 minio 文档。