所有文章 > API解决方案 > MinIO API文档快速入门
MinIO API文档快速入门

MinIO API文档快速入门

本文介绍了MinIO的常用API及其使用方法,涵盖了如何启动MinIO服务、在SpringBoot中集成MinIO、常用API的使用示例以及对象存储操作等。通过这些内容,您可以快速掌握MinIO的基本使用技巧,包括创建和管理存储桶、上传和下载对象、生成可访问的URL以及对象的复制和删除等操作。本指南提供了详细的代码示例,帮助您更好地理解和应用MinIO的功能。

MinIO 常用 API 快速入门

在本篇文章中,我们将详细介绍MinIO的常用API,并提供具体的代码示例,以帮助您快速入门和掌握MinIO的基本操作。本文还附带了一些相关的图片链接,确保您对MinIO有一个更直观的了解。

启动 MinIO

在Windows环境下启动MinIO非常简单。首先,您需要下载MinIO的可执行文件,然后运行它。

# 找到minio所在文件地址,运行minio.exe
.minio.exe server E:minio --console-address :9090

E:minio 是项目运行和文件存储的目录。--console-address 指定了 MinIO Web 控制台,9090 是 Web 的运行端口。

MinIO启动界面

通过访问终端显示的地址,您可以打开MinIO的项目页面,并输入终端给出的用户名和密码进行登录。

SpringBoot 集成

在SpringBoot项目中集成MinIO可以通过添加相应的依赖开始。下面是如何在SpringBoot中配置MinIO客户端的示例。


    io.minio
    minio
    8.5.9
@Configuration
public class MinIOConfig {
    @Bean
    public MinioClient minioClient() {
        return MinioClient.builder()
                .endpoint("http://192.168.202.1:9000")
                .credentials("minioadmin", "minioadmin")
                .build();
    }
}

时间误差

在不同的系统环境中运行MinIO可能会产生时间误差,例如开发环境为Windows,而MinIO运行在Linux上。为了避免这种情况,可以同步Linux系统时间。

# 安装 ntpdate
yum install ntpdate -y
# 同步时间
ntpdate poll.ntp.org

MinioClient 常用 API

操作 Bucket

MinIO的存储结构与传统的文件系统有些不同,它使用桶(Bucket)来管理数据。

  • 判断桶是否存在:使用 bucketExists 方法。
boolean exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket("test").build());
System.out.println("test文件夹是否存在:" + exists);
  • 创建桶:使用 makeBucket 方法。
minioClient.makeBucket(MakeBucketArgs.builder().bucket("test").build());
  • 列出所有桶:使用 listBuckets 方法。
List buckets = minioClient.listBuckets();
for (Bucket bucket : buckets) {
    System.out.println("name: " + bucket.name() + ";creationDate: " + bucket.creationDate());
}
  • 删除桶:使用 removeBucket 方法。
minioClient.removeBucket(RemoveBucketArgs.builder().bucket("test").build());

操作 Object

对象(Object)是MinIO中存储的基本单位。

  • 上传文件到桶中:使用 putObject 方法。
File file = new File("C:\Users\j9967\Downloads\lifecycle-events.png");
FileInputStream stream = new FileInputStream(file);
ObjectWriteResponse response = minioClient.putObject(PutObjectArgs.builder()
        .bucket("test")
        .object("my-test.jpg")
        .stream(stream, file.length(), -1)
        .build());

Object上传示例

  • 下载文件:使用 getObject 方法。
GetObjectResponse response = minioClient.getObject(GetObjectArgs.builder()
        .bucket("public-readonly-file")
        .object("my-public.jpg")
        .build());
String fileName = response.object();
response.transferTo(new FileOutputStream("E:\code" + fileName));
  • 列出桶中的所有文件:使用 listObjects 方法。
Iterable<Result> results = minioClient.listObjects(ListObjectsArgs.builder()
        .bucket("public-readonly-file")
        .build());
for (Result result : results) {
    Item item = result.get();
    System.out.println(item.lastModified() + "t" + item.size() + "t" + item.objectName());
}
  • 删除桶中的文件:使用 removeObject 方法。
minioClient.removeObject(RemoveObjectArgs.builder()
        .bucket("public-readonly-file")
        .object("my-public.jpg")
        .build());

公开 URL 访问权限

默认情况下,MinIO生成的URL需要签名才能访问。要实现公开访问,可以设置桶的访问策略。

  1. 使用 setBucketPolicy 设置为公开读策略。
String bucketName = "public-readonly-file";
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
String policyJsonString = "{"Version":"2012-10-17","Statement":[{"Sid":"PublicRead","Effect":"Allow","Principal":{"AWS":"*"},"Action":["s3:GetObject"],"Resource":["arn:aws:s3:::" + bucketName + "/*"]}]}";
minioClient.setBucketPolicy(SetBucketPolicyArgs.builder()
        .bucket(bucketName)
        .config(policyJsonString)
        .build());

设置公开访问策略

通过以上设置,您可以直接访问 public-readonly-file 桶中的文件,而不需要签名。

以上内容展示了如何使用MinIO的API来进行基本操作。希望通过本文的介绍,您能够对MinIO有一个更深入的了解,帮助您在项目中更好地集成和使用MinIO。

FAQ

问:如何在Windows环境下启动MinIO?

  • 答:在Windows环境下启动MinIO非常简单。首先,您需要下载MinIO的可执行文件,然后运行它。通过以下命令来启动:
    .minio.exe server E:minio --console-address :9090

    这里,E:minio 是项目运行和文件存储的目录,--console-address 指定了 MinIO Web 控制台的运行端口为 9090

问:如何在SpringBoot项目中集成MinIO?

  • 答:在SpringBoot项目中集成MinIO可以通过添加MinIO的依赖来实现。首先,在项目的pom.xml添加如下依赖:
    
      io.minio
      minio
      8.5.9
    

    然后,配置MinIO客户端:

    @Configuration
    public class MinIOConfig {
      @Bean
      public MinioClient minioClient() {
          return MinioClient.builder()
                  .endpoint("http://192.168.202.1:9000")
                  .credentials("minioadmin", "minioadmin")
                  .build();
      }
    }

问:如何解决不同系统环境下的时间误差问题?

  • 答:在不同的系统环境中运行MinIO可能会产生时间误差,特别是当开发环境为Windows,而MinIO运行在Linux上。为了解决这个问题,可以同步Linux系统时间。可以使用ntpdate命令来同步时间:
    # 安装 ntpdate
    yum install ntpdate -y
    # 同步时间
    ntpdate poll.ntp.org

问:如何使用MinIO API判断桶(Bucket)是否存在?

  • 答:可以使用MinIO的bucketExists方法来判断桶是否存在。以下是示例代码:
    boolean exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket("test").build());
    System.out.println("test文件夹是否存在:" + exists);

问:如何设置MinIO的公开URL访问权限?

  • 答:默认情况下,MinIO生成的URL需要签名才能访问。要实现公开访问,可以设置桶的访问策略。可以使用setBucketPolicy方法设置为公开读策略:
    String bucketName = "public-readonly-file";
    minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
    String policyJsonString = "{"Version":"2012-10-17","Statement":[{"Sid":"PublicRead","Effect":"Allow","Principal":{"AWS":"*"},"Action":["s3:GetObject"],"Resource":["arn:aws:s3:::" + bucketName + "/*"]}]}";
    minioClient.setBucketPolicy(SetBucketPolicyArgs.builder()
          .bucket(bucketName)
          .config(policyJsonString)
          .build());

    通过以上设置,您可以直接访问 public-readonly-file 桶中的文件,而不需要签名。

#你可能也喜欢这些API文章!