1. 概念
* **对象(Object)** 对象是实际的数据单元,例如我们上传的一个图片。
* **存储桶(Bucket)**存储桶是用于组织对象的命名空间,类似于文件夹。每个存储桶可以包含多个对象。
* **端点(Endpoint)** 端点是MinIO服务器的网络地址,用于访问存储桶和对象,例如`http://192.168.10.101:9000`**注意:**`9000`为MinIO的API的默认端口,前边配置的`9001`以为管理页面端口。
* **Access Key 和 Secret Key****Access Key**是用于标识和验证访问者身份的唯一标识符,相当于用户名。**Secret Key**是与**Access Key**关联的密码,用于验证访问者的身份。
2. MinIO Java SDK
通过Java代码对桶进行增删操作
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);
}
}
}