maven操作minio 文件服务器

  工作中用到了minio文件服务,记录下minio 文件简单使用。

1.添加maven依赖

<!--添加minio的依赖-->
<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>7.0.2</version>
</dependency>

 2.配置信息

package com.bochao.cim.file.config;

import io.minio.MinioClient;
import io.minio.errors.InvalidEndpointException;
import io.minio.errors.InvalidPortException;
import lombok.Data;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;


/**
 * @description: minio配置
 * @date 2021/7/8
 */
@Data
@Component
@ConfigurationProperties(prefix = "minio")
public class MinioConfig {
    Logger logger = LoggerFactory.getLogger(this.getClass());
    /**
     * 服务地址
     */
    private String endpoint;
    /**
     * 端口
     */
    private Integer port;
    /**
     * 用户名
     */
    private String accesskey;
    /**
     * 密码
     */
    private String secretkey;
    /**
     * 请求方式 如果是true,则用的是https而不是http,默认值是true
     */
    private Boolean secure;
    /**
     * 默认存储桶
     */
    private String bucketName;

    @Bean
    public MinioClient getMinioClient() {
        MinioClient minioClient = null;
        try {
            minioClient = new MinioClient(endpoint, port, accesskey, secretkey, secure);
            logger.info("Minio文件存储服务初始化完成");
        } catch (Exception e) {
            logger.error("Minio文件存储服务初始化异常" + e.getMessage());
            e.printStackTrace();
        }
        return minioClient;
    }

}

3.application.yml 配置文件服务连接信息

minio:
  endpoint: 127.0.0.1
  port: 9001
  accesskey: minioadmin
  secretkey: minioadmin
  secure: false #如果是true,则用的是https而不是http,默认值是true
  bucketName: test#默认存储桶

4.文件上传下载工具类

@EnableConfigurationProperties(MinioConfig.class)
@ConditionalOnBean(MinioConfig.class)
@Service
public class MinioStoreService  {
    Logger logger = LoggerFactory.getLogger(this.getClass());

    @Autowired
    private MinioClient minioClient;

    @Autowired
    private MinioConfig minioConfig;

    /**
     * 判断 bucket是否存在
     *
     * @param bucketName
     * @return
     */
    public boolean bucketExists(String bucketName) {
        try {
            return minioClient.bucketExists(bucketName);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

    /**
     * 创建 bucket
     *
     * @param bucketName
     */
    public void makeBucket(String bucketName) {
        try {
            boolean isExist = minioClient.bucketExists(bucketName);
            if (!isExist) {
                minioClient.makeBucket(bucketName);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * @Description:检查文件对象是否存在
    
     */
    @Override
    public boolean existFile(String path) throws Exception {
        ObjectStat statObject = minioClient.statObject(minioConfig.getBucketName(), path);
        if (statObject != null && statObject.length() > 0) {
            return true;
        }
        return false;
    }

    /**
     * @Description:MultipartFile 上传文件
  
     * @Param [path 文件对象,例如/20210708/000.txt,会自动在默认桶下创建20210708文件夹, file 文件]
     * @return java.lang.Long
     */
    @Override
    public Long uploadFile(String path, MultipartFile file) {
        try(InputStream inputStream = file.getInputStream()) {
            //检查存储桶是否已经存在
            boolean isExist = this.bucketExists(minioConfig.getBucketName());
            if (!isExist) {
                minioClient.makeBucket(minioConfig.getBucketName());
            }
            // PutObjectOptions,上传配置(文件大小,内存中文件分片大小)
            //PutObjectOptions putObjectOptions = new PutObjectOptions(file.getSize(), PutObjectOptions.MIN_MULTIPART_SIZE);
            PutObjectOptions putObjectOptions = new PutObjectOptions(file.getSize(), -1);
            //PutObjectOptions putObjectOptions = new PutObjectOptions(inputStream.available(), -1);
            // 文件的ContentType
            putObjectOptions.setContentType(file.getContentType());
            minioClient.putObject(minioConfig.getBucketName(), path, inputStream, putObjectOptions);
            return file.getSize();
        } catch (Exception e) {
            logger.error("Minio上传文件出错");
            e.printStackTrace();
        }
        return 0L;
    }

    /**
     * @Description:上传文件
   
     */
    @Override
    public Long uploadFile(String path, File file) {
        try (InputStream inputStream = new FileInputStream(file)) {
            //检查存储桶是否已经存在
            boolean isExist = this.bucketExists(minioConfig.getBucketName());
            if (!isExist) {
                minioClient.makeBucket(minioConfig.getBucketName());
            }
            minioClient.putObject(minioConfig.getBucketName(), path, inputStream, new PutObjectOptions(file.length(), -1));
            return file.length();
        } catch (Exception e) {
            logger.error("Minio上传文件出错");
            e.printStackTrace();
        }
        return 0L;
    }

    /**
     * @Description:检查桶,不存在则创建桶
    
     */
    @Override
    public String mkdir() throws Exception {
        boolean b = this.bucketExists(minioConfig.getBucketName());
        if (!b) {
            this.makeBucket(minioConfig.getBucketName());
        }
        return minioConfig.getBucketName();
    }

    /**
     * @Description:下载文件
    
     */
    @Override
    public void downloadFile(String storePath, ServletOutputStream outputStream) throws Exception {
        boolean flag = this.existFile(storePath);
        if (!flag) {
            throw new MicroServiceException(ResultCode.RESULE_DATA_NONE.code(), "文件不存在");
        }
        try (InputStream inputStream = minioClient.getObject(minioConfig.getBucketName(), storePath)) {
            IOUtils.copy(inputStream, outputStream);
        } catch (Exception e) {
            logger.error("文件下载异常");
            e.printStackTrace();
        }
    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 你可以通过以下 Maven 依赖来下载 Minio 最新版: ```xml <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>8.1.0</version> </dependency> ``` 请注意,这只是一个示例,版本号可能会随着时间的推移而改变。建议你查看 MinioMaven 中央仓库,以获取最新版本的信息。 ### 回答2: 要下载Minio最新版本的依赖,可以通过Maven的依赖管理工具实现。以下是在pom.xml文件中添加Minio依赖的步骤: 首先,在pom.xml文件中找到<dependencies>标签,然后在其中添加如下代码: ```xml <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>RELEASE.2022-01-27T19-49-21Z</version> </dependency> ``` 上述代码指定了Minio的groupId为`io.minio`,artifactId为`minio`,版本号为`RELEASE.2022-01-27T19-49-21Z`。这是最新的Minio版本号,可以通过Minio官方网站或Maven仓库获取最新版本号。 接下来,保存pom.xml文件并运行项目,Maven将会从配置的远程Maven仓库中下载Minio的最新版本依赖。如果本地没有缓存的依赖,Maven将会自动下载并添加到项目中。 下载完成后,就可以在项目中使用Minio的相关功能了。记得根据项目需要进行相应的配置,如设置Minio服务器地址、认证信息等。 总结起来,通过配置pom.xml文件并添加Minio的最新版本依赖,我们可以方便地使用Minio的功能,实现对象存储和云存储的相关操作。 ### 回答3: 要下载Minio最新版的Maven依赖,首先需要在pom.xml文件中添加Minio的依赖项。你可以在Maven中央存储库中找到Minio的最新版本信息。 首先,打开你的项目的pom.xml文件。在<dependencies>标签里,添加以下代码: ```xml <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>RELEASE.2022-01-07T02-29-34Z</version> </dependency> ``` 上述代码将下载Minio的最新版本到你的项目中。 要获取最新版本的Minio依赖,你可以在Maven中央存储库的网站上搜索Minio。在搜索结果中,你将找到最新版本的Minio依赖的相关信息,包括groupId、artifactId和version。 在pom.xml文件中更新添加的代码,将version替换为最新的Minio依赖版本。 保存pom.xml文件后,Maven将会自动下载并安装Minio的最新版本依赖到你的项目中。 请注意,Maven可能需要一些时间来下载依赖。你可以通过查看Maven控制台输出来跟踪下载进度。成功下载完依赖后,你可以在你的项目中使用Minio的最新版本功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值