通過訪問終端顯示的地址,您可以打開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)來管理數據。

boolean exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket("test").build());
System.out.println("test文件夾是否存在:" + exists);
minioClient.makeBucket(MakeBucketArgs.builder().bucket("test").build());
List buckets = minioClient.listBuckets();
for (Bucket bucket : buckets) {
    System.out.println("name: " + bucket.name() + ";creationDate: " + bucket.creationDate());
}
minioClient.removeBucket(RemoveBucketArgs.builder().bucket("test").build());

操作 Object

對象(Object)是MinIO中存儲的基本單位。

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上傳示例

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));
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());
}
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?

問:如何在SpringBoot項目中集成MinIO?

問:如何解決不同系統環境下的時間誤差問題?

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

問:如何設置MinIO的公開URL訪問權限?

上一篇:

MinIO與Azure兼容嗎?

下一篇:

JenkinsAPI文檔詳解
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費