Note
1. 添加 MinIO 客户端依赖
在您的 Spring Boot 项目的 pom.xml 文件中添加 MinIO 客户端依赖:
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.4.3</version>
</dependency>
接下来,在application.properties或application.yml中配置Minio的访问信息,例如:
minio:
endpoint: http://localhost:9000
access-key: YOUR_ACCESS_KEY
secret-key: YOUR_SECRET_KEY
bucket-name: your-bucket-name
Note
2. 创建 MinIO 配置类
创建一个配置类,用于初始化 MinIO 客户端。创建一个名为 MinioConfig 的类:
import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MinioConfig {
@Value("${minio.endpoint}")
private String endpoint;
@Value("${minio.accessKey}")
private String accessKey;
@Value("${minio.secretKey}")
private String secretKey;
@Bean
public MinioClient minioClient() {
MinioClient minioClient =
MinioClient.builder()
.endpoint(endpoint)
.credentials(accessKey, secretKey)
.build();
return minioClient;
}
}
Note
3.现在可以开始使用了,下面是一个上传图片的示例:
import org.joda.time.DateTime;
@Service
public class FileUploadServiceImpl implements FileUploadService {
@Autowired
private MinioClient minioClient;
@Value("${minio.bucketName}")
private String bucketName;
@Value("${minio.endpoint}")
private String endpoint;
//使用minio图片上传
@Override
public String uploadFile(MultipartFile file) {
//获取文件实际名称
String objectName = file.getOriginalFilename();
try {
//上传文件输入流
InputStream inputStream = file.getInputStream();
String uuid = UUID.randomUUID().toString().replaceAll("-","");
objectName = uuid+objectName;
//对上传文件进行分组,根据当前年/月/日
// objectName: 2025/5/12/uuid01.jpg
String currentDateTime = new DateTime().toString("yyyy/MM/dd");
objectName = currentDateTime+"/"+objectName;
PutObjectArgs putObjectArgs = PutObjectArgs.builder()
.object(objectName)
.stream(inputStream, file.getSize(), -1)
.bucket(bucketName)
.build();
minioClient.putObject(putObjectArgs);
} catch (Exception e) {
throw new HgyxException("上传图片失败",201);
}
String url = endpoint+"/"+bucketName+"/"+objectName;
return url;
}
}