概述:
minio是开源文件存储系统,可以用来存储和检索大量的文件。它是一个轻量级的分布式存储服务。
讲解:
对minio的简单了解之后,开始我们的正题。
1.部署
首先要有一个minio.tar.gz镜像,直接在docker load -i minio.tar.gz进去就可以,docker images查看此镜像
启动命令:
docker run
-p 9000:9000
-p 9090:9090
--name minio
-d --restart=always
-e MINIO_ACCESS_KEY=minio
-e MINIO_SECRET_KEY=minio@123
-v /usr/local/minio/data:/data
-v /usr/local/minio/config:/root/.minio minio/minio:RELEASE.2023-03-09T23-16-13Z
server /home/minio --console-address ":9000" --address ":9090"
-p: 指定端口映射,格式为:主机端口:容器端口 (这里注意要映射两个,否则API会访问不到)
-e “MINIO_ROOT_USER=vinci” minio用户名;
-e MINIO_SECRET_KEY=123456 minio 密码
-d: 后台运行容器,并返回容器ID;
-v: 绑定一个卷
然后,就可以docker ps -a查看容器列表发现minio服务启动了
查看minio容器的日志docker logs -f ID号,出现这种的基本上没什么问题了,已经成功了
可以进行访问了(账号密码是你启动minio容器设置的账号密码)
强调:
如果说出现加载不出来,有可能是你没有开放端口,记得开放一下端口
创建桶名称
2.minio客户端上传文件
依赖:
在application.properties中添加minio配置
minio.endpoint=http://ip:9090/
minio.bucket-name=librarytest(创建的桶名称)
minio.access-key=用户名
minio.secret-key=密码
测试minio文件上传
两种方式:
1.minioClient.uploadObject()
特点:
- 提供更灵活的上传功能。
- 使用
UploadObjectArgs
构建器类,可以设置更多参数,如存储桶名称、对象名称、文件路径等。- 支持更多的配置选项,适用于更复杂的上传用例。
2.minioClient.putObject()
特点:
- 提供基本的文件上传功能。
- 适合简单的上传用例。
- 可以通过
PutObjectArgs
设置存储桶名称、对象名称、输入流等。
特别强调:
如果你依赖中包含okhttp3,一定要注意跟minio兼容性。要不然会报错
//测试minio上传文件
public static void main(String[] args) {
String filetype = ".doc";
String uuid = UUID.randomUUID() + "-00000";
String fileName = uuid + "." + filetype;
String endpoint = "http://ip:端口"; // MinIO 服务器的地址
String accessKey = "minioadmin"; // MinIO 访问密钥
String secretKey = "minioadmin"; // MinIO 秘密密钥
try {
// 创建 Minio 客户端
MinioClient minioClient = MinioClient.builder()
.endpoint(endpoint)
.credentials(accessKey, secretKey)
.build();
// 指定要上传的文件和存储桶名称
File file = new File("D://系统部署方案.doc");
InputStream files = new FileInputStream(file);
String bucketName = "librarytest";//改成你的桶名称
boolean exists = minioClient.bucketExists((BucketExistsArgs)((BucketExistsArgs.Builder)BucketExistsArgs.builder().bucket(bucketName)).build());
if(!exists)
minioClient.makeBucket((MakeBucketArgs)((MakeBucketArgs.Builder)MakeBucketArgs.builder()
.bucket(bucketName))
.build());
//第一种方式上传
// minioClient.uploadObject(
// UploadObjectArgs.builder()
// .bucket(bucketName)
// .object(fileName)
// .filename(String.valueOf(file.toPath()))
// .contentType(filetype)
// .build()
// );
//第二种方式上传
minioClient.putObject((PutObjectArgs)((PutObjectArgs.Builder)((PutObjectArgs.Builder)PutObjectArgs.builder()
.bucket(bucketName))
.object(fileName))
.stream(files,files.available(),-1L)
.contentType(filetype)
.build());
System.out.println("上传成功!");
}catch (Exception e){
System.out.println("minio上传文件失败:"+e.getMessage());
}
}
上传成功之后,查看minio文件就可以了。