minio常见api

MinIO 提供了一系列 Java API,用于操作对象存储,比如 文件上传、下载、删除、获取文件 URL、管理存储桶等。下面是 MinIO Java SDK常见 API,并附上了示例代码。


1️⃣ 连接 MinIO

MinioClient minioClient = MinioClient.builder()
        .endpoint("http://localhost:9000")  // MinIO 服务器地址
        .credentials("admin", "password")   // 账号 & 密码
        .build();

✅ 作用:

  • 连接 MinIO 服务器,所有操作都基于 MinioClient


2️⃣ 存储桶操作

📌 2.1 检查存储桶是否存在

boolean exists = minioClient.bucketExists(BucketExistsArgs.builder()
        .bucket("my-bucket").build());

System.out.println("存储桶是否存在: " + exists);

✅ 作用:

  • 检查是否存在 my-bucket,如果不存在,可以创建。


📌 2.2 创建存储桶

minioClient.makeBucket(MakeBucketArgs.builder()
        .bucket("my-bucket")
        .build());

✅ 作用:

  • 创建 my-bucket 存储桶(如果不存在)。


📌 2.3 删除存储桶

minioClient.removeBucket(RemoveBucketArgs.builder()
        .bucket("my-bucket")
        .build());

✅ 作用:

  • 删除存储桶,前提是 存储桶必须为空,否则无法删除。


3️⃣ 文件操作

📌 3.1 上传文件

minioClient.putObject(PutObjectArgs.builder()
        .bucket("my-bucket")
        .object("test.txt")  // MinIO 里的文件名
        .stream(new FileInputStream("D:/test.txt"), 
                new File("D:/test.txt").length(), -1)
        .contentType("text/plain")  // 指定文件类型
        .build());

✅ 作用:

  • 将本地文件 D:/test.txt 上传到 my-bucket,并存为 test.txt


📌 3.2 下载文件

InputStream inputStream = minioClient.getObject(GetObjectArgs.builder()
        .bucket("my-bucket")
        .object("test.txt")
        .build());

Files.copy(inputStream, Paths.get("D:/downloaded-test.txt"),
           StandardCopyOption.REPLACE_EXISTING);

✅ 作用:

  • 下载 MinIO 里的 test.txt 并保存到 D:/downloaded-test.txt


📌 3.3 删除文件

minioClient.removeObject(RemoveObjectArgs.builder()
        .bucket("my-bucket")
        .object("test.txt")
        .build());

✅ 作用:

  • 删除 my-bucket 里的 test.txt 文件


📌 3.4 获取文件 URL(预览文件)

String url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder()
        .bucket("my-bucket")
        .object("test.txt")
        .method(Method.GET)
        .build());

System.out.println("文件预览 URL: " + url);

✅ 作用:

  • 生成 test.txt 的访问 URL,浏览器可直接打开该 URL 预览文件。


4️⃣ 获取文件信息

📌 4.1 获取文件元数据

StatObjectResponse stat = minioClient.statObject(StatObjectArgs.builder()
        .bucket("my-bucket")
        .object("test.txt")
        .build());

System.out.println("文件大小: " + stat.size());
System.out.println("文件类型: " + stat.contentType());

✅ 作用:

  • 获取 test.txt 的大小、类型等元数据


📌 4.2 列出存储桶里的所有文件

Iterable<Result<Item>> files = minioClient.listObjects(ListObjectsArgs.builder()
        .bucket("my-bucket")
        .build());

for (Result<Item> result : files) {
    System.out.println("文件名:" + result.get().objectName());
}

✅ 作用:

  • 列出 my-bucket 里的所有文件


5️⃣ 设置文件访问权限

📌 5.1 设置文件为公开

String policy = "{ \"Version\":\"2012-10-17\", \"Statement\":[ { \"Effect\":\"Allow\", \"Principal\":\"*\", \"Action\":\"s3:GetObject\", \"Resource\":\"arn:aws:s3:::my-bucket/*\" } ] }";

minioClient.setBucketPolicy(SetBucketPolicyArgs.builder()
        .bucket("my-bucket")
        .config(policy)
        .build());

✅ 作用:

  • my-bucket 里的所有文件可公开访问(无需登录)。


6️⃣ 其他 API

📌 6.1 复制文件

minioClient.copyObject(CopyObjectArgs.builder()
        .source(CopySource.builder().bucket("my-bucket").object("test.txt").build())
        .bucket("my-bucket")
        .object("test-copy.txt")
        .build());

✅ 作用:

  • 复制 test.txttest-copy.txt


📌 6.2 移动文件(先复制后删除)

// 复制文件
minioClient.copyObject(CopyObjectArgs.builder()
        .source(CopySource.builder().bucket("my-bucket").object("test.txt").build())
        .bucket("new-bucket")
        .object("test.txt")
        .build());

// 删除原文件
minioClient.removeObject(RemoveObjectArgs.builder()
        .bucket("my-bucket")
        .object("test.txt")
        .build());

✅ 作用:

  • test.txtmy-bucket 移动到 new-bucket


总结

功能API 方法
连接 MinIOMinioClient.builder()
检查存储桶bucketExists()
创建存储桶makeBucket()
删除存储桶removeBucket()
上传文件putObject()
下载文件getObject()
删除文件removeObject()
获取文件 URLgetPresignedObjectUrl()
获取文件信息statObject()
列出文件listObjects()
复制文件copyObject()
设置存储桶公开setBucketPolicy()

这些 API 能满足你在 Spring Boot 里集成 MinIO 的大部分需求! 🚀

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值