引入pom
xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.4.3</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
其中spring-boot-configuration-processor
是为了在yml
中配置minio客户端信息时进行提示,可以不引入
配置
读取yml配置类
java
@Data
@Component
@ConfigurationProperties(prefix = "minio")
public class MinioPropertiesConfig {
/**
* 端点
*/
private String endpoint;
/**
* 用户名
*/
private String accessKey;
/**
* 密码
*/
private String secretKey;
/**
* 桶名称
*/
private String bucketName;
}
yml配置
yaml
minio:
accessKey: root
secretKey: 12345678
bucket-name: test
endpoint: http://192.168.134.130:9000
spring:
# 配置文件上传大小限制
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
minio 客户端配置
java
@Configuration
public class MinioConfig {
@Autowired
private MinioPropertiesConfig minioPropertiesConfig;
@Bean
public MinioClient minioClient() {
return MinioClient.builder()
.endpoint(minioPropertiesConfig.getEndpoint())
.credentials(minioPropertiesConfig.getAccessKey(), minioPropertiesConfig.getSecretKey())
.build();
}
}
使用
上传
java
@Autowired
MinioClient client;
@PostMapping("/upload")
public String upload(MultipartFile file){
// 上传文件
ObjectWriteResponse test = client.putObject(PutObjectArgs.builder()
// 上传的桶名称
.bucket("test")
// 文件名称
.object(System.currentTimeMillis() + "." + file.getOriginalFilename().split("[.]")[1])
// 文件的类型
.contentType(file.getContentType())
// 文件的流
.stream(file.getInputStream(), file.getSize(), -1)
.build());
}