下载安装
下载MinIO服务器文件
https://www.minio.org.cn/download.shtml#/windows
官网下载 MINIO SERVER
为 MinIO 准备数据路径
确保数据路径为空,且不包含任何现有文件,包括隐藏或Windows系统文件。创建一个专用于存储MinIO数据的专用文件夹,例如 D:/Minio。
启动服务器
将下载好的服务器文件放在准备好的MinIO文件夹中打开cmd 输入以下命令
minio.exe server D:/minio --console-address ":9001"
输出应类似于以下内容:
MinIO Object Storage Server
Copyright: 2015-2024 MinIO, Inc.
License: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html
Version: RELEASE.2024-08-17T01-24-54Z (go1.22.6 windows/amd64)
API: http://192.168.27.148:9000 http://192.168.153.1:9000 http://192.168.32.1:9000 http://127.0.0.1:9000
RootUser: minioadmin
RootPass: minioadmin
WebUI: http://192.168.27.148:9001 http://192.168.153.1:9001 http://192.168.32.1:9001 http://127.0.0.1:9001
RootUser: minioadmin
RootPass: minioadmin
CLI: https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart
$ mc alias set 'myminio' 'http://192.168.27.148:9000' 'minioadmin' 'minioadmin'
Docs: https://min.io/docs/minio/linux/index.html
WARN: Detected default credentials 'minioadmin:minioadmin', we recommend that you change these values with 'MINIO_ROOT_USER' and 'MINIO_ROOT_PASSWORD' environment variables
INFO:
+-------------------------------------------------------------------------------------+
| You are running an older version of MinIO released 1 week before the latest release |
| Update: Run `mc admin update ALIAS` |
+-------------------------------------------------------------------------------------+
可以通过输出的内容查看账号密码、访问API和控制台的接口和端口
整合SpringBoot
引入Maven依赖
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.4.3</version>
<exclusions>
<exclusion>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.0</version>
</dependency>
注意:由于依赖冲突,会报以下错误,要排除okhttp,引入一个更高版本的
Caused by: java.lang.RuntimeException: Unsupported OkHttp library found. Must use okhttp >= 4.8.1
at io.minio.S3Base.(S3Base.java:106)
修改application.yml配置文件
spring:
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
minio:
# 服务地址
endpoint: http://localhost:9000
# 存储桶名称
bucketName: test1
# 用户名
accessKey: minioadmin
# 密码
secretKey: minioadmin
编写配置类和工具类
MinioConfig:
package com.hzl.config;
import io.minio.MinioClient;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author
* @date 2024/9/7 11:06
**/
@Data
@Configuration
@ConfigurationProperties(prefix = "minio")
public class MinioConfig {
private String endpoint;
private String accessKey;
private String secretKey;
private String bucketName;
@Bean
public MinioClient minioClient() {
return MinioClient.builder()
.endpoint(endpoint)
.credentials(accessKey, secretKey)
.build();
}
}
MinioUtils:
package com.hzl.config;
import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author
* @date 2024/9/7 11:11
**/
@Component
public class MinioUtils {
@Autowired
private MinioClient minioClient;
/**
* @param name 名字
* @return boolean
* @Description description: 判断bucket是否存在,不存在则创建
*/
public boolean existBucket(String name) {
boolean exists;
try {
exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket(name).build());
if (!exists) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket(name).build());
exists = true;
}
} catch (Exception e) {
e.printStackTrace();
exists = false;
}
return exists;
}
}
测试
package com.hzl;
import com.hzl.config.MinioUtils;
import io.minio.MinioClient;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class SpringMinIoDemoApplicationTests {
@Autowired
MinioClient minioClient;
@Autowired
MinioUtils minioUtils;
@Test
void MinIOTest() throws Exception {
// 判断存储桶是否存在
System.out.println(minioUtils.existBucket("test2"));
// 列出所有存储桶名称
minioClient.listBuckets().forEach(bucket -> System.out.println(bucket.name()));
}
}