springboot集成minio实现文件存储
1、pom引入依赖
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.4.5</version>
</dependency>
2、yam配置文件修改
# minio 参数配置
minio:
minIoUrl: http://ip:端口
accessKey: minioAccesskey #minio的accessKey
secretKey: minioSecretKey #minio的secretKey
3、新增minioclient配置类
package com.ctfojt.uploadefile.config;
import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author lizhenwei
* @version 1.0.0
* @Description MinIoClientConfig 配置类
* @Date 2022/12/21 14:11
*/
@Configuration
public class MinIoClientConfig {
@Value("${minio.minIoUrl}")
private String minIoUrl;
@Value("${minio.accessKey}")
private String accessKey;
@Value("${minio.secretKey}")
private String secretKey;
/**
* 注入minio 客户端
* @return MinioClient
*/
@Bean
public MinioClient minioClient(){
return MinioClient.builder().endpoint(minIoUrl).credentials(accessKey, secretKey).build();
}
}
4、业务使用
public Map<String, String> uploadFile(MultipartFile attachFile,
@RequestParam(value = "haveCompressed", defaultValue = "false") boolean haveCompressed,
@RequestParam(value = "bucketName") String bucketName){
String originalFilename = attachFile.getOriginalFilename();
//判断桶是否存在
BucketExistsArgs build = BucketExistsArgs.builder().bucket(bucketName).build();
boolean isExist = minioClient.bucketExists(build);
if (!isExist) {
map.put("code", "0");
map.put("message", "桶不存在,请检查桶名后重试!");
return map;
}
//我这业务场景是不允许创建桶,如果桶不存在不让上传。
log.info("FileAttachmentController:uploadFile===>minio 上传开始");
PutObjectArgs objectArgs = PutObjectArgs.builder().object(originalFilename).bucket(bucketName).contentType(attach.getContentType()).stream(attach.getInputStream(), attach.getSize(), -1).build();
minioClient.putObject(objectArgs);
log.info("FileAttachmentController:uploadFile===>minio 上传结束");
}
附:[minio官网][https://www.minio.org.cn]