Primeiro introduza o minio, nunca o usei antes
MinlO é um serviço de armazenamento de objetos baseado no protocolo de código aberto Apache License v2.0. É compatível com a interface do serviço de armazenamento em nuvem Amazon S3 e é muito adequado para armazenar dados não estruturados de grande capacidade. Por exemplo, imagens, vídeos, arquivos de log, dados de backup e imagens de contêiner/máquina virtual, etc., e um arquivo de objeto pode ser de qualquer tamanho, variando de alguns kb a um máximo de 5T. MinlO é um serviço muito leve que pode ser facilmente integrado com outros aplicativos, como NodeJS, Redis ou MySQL.
O MinIO é nativo do Kubernetes e é o único conjunto de armazenamento de objetos disponível em todas as nuvens públicas, todas as distribuições do Kubernetes, nuvens privadas e na borda. O MinIO é definido por software e 100% de código aberto sob a licença GNU AGPL v3.
Aqui primeiro configure as informações do minio em nacos:
Primeiras dependências minio de importação:
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>${
minio.version}</version>
</dependency>
Injetar no controlador:
@Autowired
MinioClient minioClient;
@Autowired
private MinioConfig minioConfig;
@Value(value = "${minio.bucketName}")
private String bucket;
classe de configuração do minio: MinioConfig é o seguinte:
@Configuration
@ConfigurationProperties(prefix = "minio")
public class MinioConfig
{
/**
* 服务地址
*/
private String url;
/**
* 用户名
*/
private String accessKey;
/**
* 密码
*/
private String secretKey;
/**
* 存储桶名称
*/
private String bucketName;
public String getUrl()
{
return url;
}
public void setUrl(String url)
{
this.url = url;
}
public String getAccessKey()
{
return accessKey;
}
public void setAccessKey(String accessKey)
{
this.accessKey = accessKey;
}
public String getSecretKey()
{
return secretKey;
}
public void setSecretKey(String secretKey)
{
this.secretKey = secretKey;
}
public String getBucketName()
{
return bucketName;
}
public void setBucketName(String bucketName)
{
this.bucketName = bucketName;
}
@Bean
public MinioClient getMinioClient()
{
return MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build();
}
}
Interface de upload de arquivo único:
@PostMapping("/uploadFile")
R upload(MultipartFile file) throws Exception {
String fileName = FileUploadUtils.extractFilename(file);
PutObjectArgs args = PutObjectArgs.builder()
.bucket(minioConfig.getBucketName())
.object(fileName)
.stream(file.getInputStream(), file.getSize(), -1)
.contentType(file.getContentType())
.build();
minioClient.putObject(args);
System.out.println(fileName);
return R.ok(fileName);
}
Interface de upload de vários arquivos:
@ApiOperation("多文件上传minio")
@PostMapping("/uploadAllFile")
R upload(MultipartFile[] files) throws Exception {
for (MultipartFile file : files) {
String fileName = FileUploadUtils.extractFilename(file);
PutObjectArgs args = PutObjectArgs.builder()
.bucket(minioConfig.getBucketName())
.object(fileName)
.stream(file.getInputStream(), file.getSize(), -1)
.contentType(file.getContentType())
.build();
minioClient.putObject(args);
System.out.println(fileName);
}
return R.ok();
}
Selecione vários arquivos no carteiro:
resultado do upload: