MinIO的介绍以及简单的使用

什么是MinIO

MinIO是在GUN Affero通用公共许可证 v3.0 下发布的高性能对象存储.他与AmazonS3云存储服务API兼容.使用MinIO为机器学习,分析和应用程序数据工作负载构建高性能基础架构.

MinIO是一个高兴能的对象存储,什么是对象存储(Object Storage Service),对象存储是支持海量用户远程访问的无限容量的廉价的存储系统.

它由桶(bucket,对应了windows中的文件夹),组成的目录结构,桶中直接存放对象,桶中是不能再创建桶的,但是可以创建文件夹

下载和启动本地MinIO

访问官网:https://docs.min.io/!

进入官网之后点击右上角的DownLoad 进入下载页面 可以选择对应系统的安装包

我这里下载了windows版本的

windows版本下载之后是只有minio.exe文件的 我们需要创建一个data文件将 然后在打开cmd进入到minio.exe所在的文件夹中 执行

minio server ./data

执行完毕之后就是这样的 我们现在就可以访问自己电脑上的MinIO了

地址: http://127.0.0.1:9000

自习看之前的窗口 上面是有账号和密码的

RootUser: minioadmin

RootPass: minioadmin

进入首页后就是要创建桶了,点有上角的Create Bucket进行创建

创建好之后会自动跳转到这个界面

点Upload就可以直接上传文件了

上传后的文件我们要查看的话 选中对应的文件点击右边的Share生成链接然后就可以用别的浏览器进行访问了,但是这样有个问题,只有7天的有效期,如果我们想将文件暴露出去,而不是通过分享这个url来进行访问呢?

那么我们应该直接访问Minio的ip+端口/桶名称/文件名

也就是 http://192.168.51.102:9000/aaaa/7.jpg 这样去访问

但是页面是这样提示的,因为我们没有权限直接这样去访问这个资源

我们可以给他添加权限,首先进入Manager

点击 Access Rules

添加读取readOnly对应的权限是*即拥有所有权限

再去访问的时候就可以直接访问了

集成Java

好了 这个是在windows中使用 使用的 那么我们要如何在java中进行集成呢?

我这里使用了maven来操作

首先让我们导入坐标

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.3.9</version>
</dependency>

<!-- okHttp -->
<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
    <version>4.9.0</version>
</dependency>

Java代码编写上传文件到bucket中

public class FileUploader {
  public static void main(String[] args) throws Exception{
    try {
      MinioClient minioClient =
          //创建MinIO Client
          MinioClient.builder()
              .endpoint("http://localhost:9000")
                //输入登录用户名和密码
              .credentials("minioadmin", "minioadmin")
              .build();

       //判断我们要上传到的 bucket 是否存在
      boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket("huike-crm").build());
      if (!found) {
        minioClient.makeBucket(MakeBucketArgs.builder().bucket("aaaa").build());
      } else {
        System.out.println("Bucket 'aaaa' already exists.");
      }

      minioClient.uploadObject(UploadObjectArgs.builder()
               //上传到那个桶中
              .bucket("aaaa")
              //指定上传MinIO中后叫什么名字
              .object("10.jpg")
              //指定上传的文件路径
              .filename("C:\\Users\\Administrator\\Pictures\\Saved Pictures\\10.jpg")
              .build());
      System.out.println("SUCCESS!!!!");
    } catch (MinioException e) {
      System.out.println("Error occurred: " + e);
      System.out.println("HTTP trace: " + e.httpTrace());
    }
  }
}

详细的MinIO Java API 文档 不过这个全是英文的

https://min.io/docs/minio/linux/developers/java/API.html

我翻看了一下 找了几个会常用到的API

removeObject

用来删除桶中指定的文件的

// Remove object.需要在构建MinIO Client对象之后进行调用
minioClient.removeObject(RemoveObjectArgs.builder().bucket("my-bucketname").object("my-objectname").build());

downloadObject

下载文件

minioClient.downloadObject(
  DownloadObjectArgs.builder()
  .bucket("my-bucketname")
  .object("my-objectname")
  .filename("my-object-file")
  .build());

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值