目录
一、MinIo概述
什么是MinIo?MinIo是一个高性能可以存储项目中的非结构化的静态资源,如:照片,视频等。本次公寓租赁项目使用MinIo来作为存储非结构化数据的系统。
1.1 MinIo的核心概念
- 端点(Endpoint ):端点是MinIO服务器的网络地址,用于访问存储桶和对象,例如
http://192.168.10.101:9000。存储桶(bucket):存储桶是用于组织对象的命名空间,类似于文件夹。每个存储桶可以包含多个对象。- 对象(object):对象是实际的数据单元,假如我们上传一张图片时,图片就是一个对象。
- Access Key:用于标识和验证访问者身份的唯一标识符,相当于用户名。
- Secret Key:与Access Key相关联,相当于密码。
1.2 MinIo登录界面

Username:即在虚拟机部署时配置文件设置的Access Key。
Password:即在虚拟机部署时配置文件设置的Secret Key。
设置Access Key和Secret Key的配置文件的路径:
/etc/default/minio

登录成功进入MinIo界面后的管理界面:

二、 SpringBoot整合MinIo
2.1 导入Maven依赖
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.5.3</version>
</dependency>
2.2 Java程序操作MinIo的API测试
public class TestMinio {
public static void main(String[] args) {
String endpoint="http://192.168.10.101:9000"; //创建变量端点
String accessKey="minioadmin"; //创建“用户名”
String secretKey="minioadmin"; //创建“密码”
String bucketName="first-project"; //“创建桶名字”
MinioClient minioClient = MinioClient.builder().endpoint(endpoint).credentials(accessKey, secretKey).build(); //构建一个MinIo的客户端,需要输入“端点”、“用户名、密码”
try {
//判断桶是否存在
boolean bucketExists = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
//如果桶不存在
if (!bucketExists){
//创建桶
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
//设置权限
String policy= """
{
"Statement" : [ {
"Action" : "s3:GetObject",
"Effect" : "Allow",
"Principal" : "*",
"Resource" : "arn:aws:s3:::%s/*"
} ],
"Version" : "2012-10-17"
}
""".formatted(bucketName);
minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(bucketName).config(policy).build());
}
//上传文件
minioClient.uploadObject(UploadObjectArgs.builder().filename("C:\\Users\\93208\\Desktop\\Coder\\1.jpg").bucket(bucketName).object("coderImg.jpg").build());
System.out.println("上传成功");
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果:

那么我们返回MinIo后台管理界面查看一下是否成功上传。


可知已经成功上传了coder的头像!
除了使用API设置权限之外,还可以在后台管理界面设置权限。


被折叠的 条评论
为什么被折叠?



