Java使用minio批量上传文件

首先介绍一下minio,之前没用过

MinlO是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据。例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。MinlO是一个非常轻量的服务 可以很简单的和其他应用的结合,类似NodeJS, Redis或者MySQL。
MinIO是Kubernetes的原生产品,是唯一一个可在每个公共云、每个Kubernetes发行版、私有云和边缘上使用的对象存储套件。MinIO是软件定义的,在GNU AGPL v3下是100%开源的。

这里首先在nacos里面配置minio的信息:

在这里插入图片描述首先导入minio依赖:

        <dependency>
            <groupId>io.minio</groupId>
            <artifactId>minio</artifactId>
            <version>${
    
    minio.version}</version>
        </dependency>

在controller中注入:

    @Autowired
    MinioClient minioClient;

    @Autowired
    private MinioConfig minioConfig;

    @Value(value = "${minio.bucketName}")
    private String bucket;

minio配置类:MinioConfig如下 :

@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();
    }
}

单文件上传接口:

@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);

    }

多文件上传接口:

 @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();
    }

postman中选中多文件:
在这里插入图片描述
上传结果:
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42260782/article/details/131128350
今日推荐