MinIO创建和上传数据
1.启动Minio然后进行登录对应文档
2.创建数据桶



3.创建后找到对应的数据桶,进行图片或文件上传



4.在浏览器里访问上传的图片
- 访问图片会出现这种情况,这时因为没有开启桶的访问权限
- 访问图片的地址是Minio地址+图片地址

5.设置桶访问权限
桶的权限共有三个选项,分别是:
Private:只允许桶的所有者对该桶进行读写。Public:允许所有人对该桶进行读写。Custom:自定义访问权限。

6.自定义桶的访问权限
若想将权限设置为只允许所有者写,但允许所有人读,就需要自定义访问权限。
自定义访问权限,需要使用一个规定格式的JSON字符串进行描述,具体格式可参考官方文档

7.然后在请求图片就能正常访问了
项目里使用MinIo
MinIO提供了多种语言的SDK供开发者使用,本项目需要用到Java SDK官方文档
1.创建项目,并配置依赖
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.5.3</version>
</dependency>
2.编写代码进行测试
package com.MyBatis.updataImage;
import io.minio.*;
import io.minio.errors.MinioException;
public class upImage {
public static void main(String[] args) {
try {
// 构造 MinIO Client
MinioClient minioClient = MinioClient.builder()
.endpoint("http://192.168.23.101:9000")// 要填写MinIo的api端口的地址
.credentials("minioadmin", "minioadmin")
.build();
String bucketName = "hello-minio";
// 创建hello-minio桶
boolean found = minioClient.bucketExists(
BucketExistsArgs.builder().bucket(bucketName).build()
);
if (!found) {
// 创建hello-minio桶
minioClient.makeBucket(
MakeBucketArgs.builder().bucket(bucketName).build()
);
// 设置数据桶访问权限(使用文本块)
String policy = """
{
"Version": "2012-10-17",
"Statement": [{
"Action": "s3:GetObject",
"Effect": "Allow",
"Principal": "*",
"Resource": "arn:aws:s3:::hello-minio/*"
}]
}""";
minioClient.setBucketPolicy(
SetBucketPolicyArgs.builder()
.bucket(bucketName)
.config(policy)
.build()
);
} else {
System.out.println("Bucket '" + bucketName + "' already exists.");
}
// 上传图片(注意修改文件路径)
minioClient.uploadObject(
UploadObjectArgs.builder()
.bucket(bucketName)
.object("猫.jpg") // 上传后的文件名
.filename("C:\\Users\\30593\\Desktop\\猫.jpg")
.build()
);
System.out.println("上传成功");
} catch (MinioException e) {
System.out.println("MinIO Error: " + e.getMessage());
e.printStackTrace();
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
e.printStackTrace();
}
}
}
