首页 前端知识 Nodejs中使用Minio

Nodejs中使用Minio

2024-11-10 09:11:40 前端知识 前端哥 35 250 我要收藏

Minio

安装Minio

MinIO下载

下载完,服务端和客户端后,最好像我这样做,去分一下路径。

在这里插入图片描述

在这里插入图片描述

安装完后,进入bin目录输入以下指令:

# 设置账户
setx MINIO_ROOT_USER admin

# 设置密码
setx MINIO_ROOT_PASSWORD password

# 启动服务
minio.exe server D:\minio\data --console-address "127.0.0.1:9000" --address "127.0.0.1:9005"
  • minio.exe serever 启动服务

  • D:\minio\data 数据存放位置

  • –console-address “127.0.0.1:9000” 设置控制台端口

  • –address “127.0.0.1:9005” 设置服务端口

启动服务后需要注意这两个位置:

在这里插入图片描述

可以访问 http://127.0.0.1:9000 去查看控制台。

安装SDK

这里我就演示Node.js的SDK常用使用方法。

安装
yarn add minio
基本使用
// 引入
const Minio = require('minio')

// 初始化minio客户端
const minioClient = new Minio.Client({
  endPoint: '127.0.0.1',// 服务器的地址
  port: 9005,// 端口
  useSSL: false,// 是否使用 SSL 加密连接
  accessKey: 'minioadmin',
  secretKey: 'minioadmin'
})

// 上传文件到 MinIO (存储桶名称,对象名称,文件路径,上传结果)
minioClient.fPutObject('mybucket', 'myobject', './demofile.txt', (err, etag)=>{
  if (err) return console.log(err)
  console.log('File uploaded successfully.')
})
桶操作
创建
// (储桶的名称,储桶的区域)
minioClient.makeBucket('mybucket', 'us-east-1', function(err) {
  if (err) return console.log('Error creating bucket.', err)
  console.log('Bucket created successfully.')
})
列出存储桶
minioClient.listBuckets(function(err, buckets) {
  if (err) return console.log(err)
  console.log('Buckets:', buckets)
})
列出存储桶中的对象
// (存储桶的名称,对象的前缀,是否递归列出所有对象)
const stream = minioClient.listObjects('mybucket', '', true)
stream.on('data', function(obj) {
  console.log(obj)
})
stream.on('error', function(err) {
  console.log(err)
})
删除存储桶
minioClient.removeBucket('mybucket', function(err) {
  if (err) return console.log('Unable to remove bucket', err)
  console.log('Bucket removed successfully.')
})
设置存储桶策略
const policy = {
  Version: '2012-10-17',// 策略语法的版本
  Statement: [
    {
      Effect: 'Allow',// 指定声明的效果 Allow表示允许指定的操作。
      Principal: { AWS: ['*'] },// 指定被授权的主体 { AWS: ['*'] },表示所有 AWS 用户(包括匿名用户)。
      Action: ['s3:GetObject'],// 指定允许的操作 ['s3:GetObject'],表示允许获取对象(读取操作)。
      Resource: ['arn:aws:s3:::mybucket/*']// 指定受策略影响的资源 ['arn:aws:s3:::mybucket/*'],表示 mybucket 存储桶中的所有对象。
    }
  ]
}

// (存储桶的名称,策略对象转换为JSON字符串)
minioClient.setBucketPolicy('mybucket', JSON.stringify(policy), function(err) {
  if (err) return console.log(err)
  console.log('Bucket policy set successfully.')
})
获取存储桶策略
minioClient.getBucketPolicy('mybucket', function(err, policy) {
  if (err) return console.log(err)
  console.log('Bucket policy:', policy)
})
对象操作
下载对象
// (存储桶的名称,对象的名称,本地文件的路径)
minioClient.fGetObject('mybucket', 'myobject', './downloaded-myobject.txt', function(err) {
  if (err) return console.log(err)
  console.log('File downloaded successfully.')
})
删除对象
// (存储桶的名称,对象的名称)
minioClient.removeObject('mybucket', 'myobject', function(err) {
  if (err) return console.log('Unable to remove object', err)
  console.log('Removed the object successfully.')
})
获取对象的元数据
// (存储桶的名称,对象的名称)
minioClient.statObject('mybucket', 'myobject', function(err, stat) {
  if (err) return console.log(err)
  console.log(stat)
})
生成对象的预签名 URL
// (HTTP 方法,存储桶的名称,对象的名称,URL的有效时间以秒为单位)
const url = minioClient.presignedUrl('GET', 'mybucket', 'myobject', 24 * 60 * 60, function(err) {
  if (err) return console.log(err)
  console.log('Presigned URL:', url)
})
转载请注明出处或者链接地址:https://www.qianduange.cn//article/20104.html
标签
评论
发布的文章
大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!