MinIO结合java(初步)

minio

对象存储服务:

相关概念
  • 存储桶(Bucket)

    存储桶是用于组织对象的命名空间,类似于文件夹。每个存储桶可以包含多个对象。

  • 对象(Object)

    对象是实际的数据单元,例如我们上传的一个图片。

  • 端点(Endpoint)

    端点是MinIO服务器的网络地址,用于访问存储桶和对象,例如http://192.168.10.101:9000

    注意:

    9000为MinIO的API的默认端口,前边配置的9001以为管理页面端口。

  • Access Key 和 Secret Key

    Access Key是用于标识和验证访问者身份的唯一标识符,相当于用户名。

    Secret Key是与Access Key关联的密码,用于验证访问者的身份。

访问权限问题

桶的默认权限为Private
桶的权限有

Private: 只允许桶的所有者对该桶进行读写。

Public:允许所有人对该桶进行读写。

Custom:自定义访问权限。

对象存储服务:业务的要求是所有人有读权限。系统内的用户有相应的写权限。

这个需要一个南山之下 的JSON字符串进行描述,具体看官方文档。

{
  "Statement" : [ {
    "Action" : "s3:GetObject",
    "Effect" : "Allow",
    "Principal" : "*",
    "Resource" : "arn:aws:s3:::test/*"
  } ],
  "Version" : "2012-10-17"
}
MinIO Java SDK
  1. 导入依赖

    <dependency>
        <groupId>io.minio</groupId>
        <artifactId>minio</artifactId>
        <version>8.5.3</version>
    </dependency>
    
  2. 编写相应代码

    public class App {
        public static void main(String[] args) throws IOException, NoSuchAlgorithmException, InvalidKeyException {
    
            try {
                //构造MinIO Client
                MinioClient minioClient = MinioClient.builder()
                        .endpoint("http://192.168.10.101:9000")
                        .credentials("minioadmin", "minioadmin")
                        .build();
    
                //创建hello-minio桶
                boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket("hello-minio").build());
                if (!found) {
                    //创建hello-minio桶
                    minioClient.makeBucket(MakeBucketArgs.builder().bucket("hello-minio").build());
                    //设置hello-minio桶的访问权限
                    String policy = """
                            {
                              "Statement" : [ {
                                "Action" : "s3:GetObject",
                                "Effect" : "Allow",
                                "Principal" : "*",
                                "Resource" : "arn:aws:s3:::hello-minio/*"
                              } ],
                              "Version" : "2012-10-17"
                            }""";
                    minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket("hello-minio").config(policy).build());
                } else {
                    System.out.println("Bucket 'hello-minio' already exists.");
                }
    
                //上传图片
                minioClient.uploadObject(
                        UploadObjectArgs.builder()
                                .bucket("hello-minio")
                                .object("公寓-外观.jpg")
                                .filename("D:\\workspace\\hello-minio\\src\\main\\resources\\公寓-外观.jpg")
                                .build());
                System.out.println("上传成功");
            } catch (MinioException e) {
                System.out.println("Error occurred: " + e);
            }
        }
    }
    
  3. 测试

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值