Java usa minio para fazer upload de arquivos em lotes

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:

insira a descrição da imagem aquiPrimeiras 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:
insira a descrição da imagem aqui
resultado do upload:
insira a descrição da imagem aqui
insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/weixin_42260782/article/details/131128350
Recomendado
Clasificación