自学内容网 自学内容网

杂七杂八之MinIO连接和文件下载

杂七杂八之MinIO连接和文件下载

MinIO 是一个高性能的对象存储服务,兼容 Amazon S3 的 API。本文将介绍如何通过 Java 连接到 MinIO 服务器,并实现文件的上传和下载功能。

1. 前期准备

1.1 环境要求

确保你已经满足以下环境要求:
● Java 8 及以上
● Maven
● MinIO 服务器

1.2 添加依赖

在你的 Java 项目中,你需要添加 MinIO 的 SDK 依赖。使用 Maven 的话,需要在 pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.3.9</version> <!-- 请使用最新版本 -->
</dependency>

2. 连接到 MinIO并且下载文件

使用 MinIO 提供的 SDK 可以方便地建立连接。连接需要 MinIO 的 URL、Access Key 和 Secret Key。

2.1 连接示例代码

import io.minio.MinioClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static com.dahua.llmanalysis.utils.Configs.*;

/**
 * @author Sam Zhang
 * @date 2024-11-05 17:17:41
 * @since 0.0.1
 * 注释:调用minio库对接相应库
 */

public class ConnectMinio {

    private final Logger log = LoggerFactory.getLogger(this.getClass());

    /**
     * @author Sam Zhang(27988)
     * @date 2024/11/6 9:36
     * @Description: 调用minio库对接相应库
     * @param:
     * @return * @return io.minio.MinioClient
    */
    public MinioClient connectMinio(){
        MinioClient minioClient = null;
        try{
             minioClient = MinioClient.builder()
                    .endpoint("http://" + MINIOADDRESS + ":" + MINIOPORT)
                    .credentials(ACCESSKEY, SECRETKEY)
                    .build();
        }catch (Exception e){
            e.printStackTrace();
        }
        if(minioClient != null){
            log.info("minio连接成功");
        }else{
            log.info("minio连接失败");
        }
        return minioClient;
    }
}

2.2 下载文件

import io.minio.DownloadObjectArgs;
import io.minio.MinioClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author Sam Zhang
 * @date 2024-11-05 17:14:41
 * @since 0.0.1
 * 注释:下载对应文件
 */

public class GetMinioFile {
    private final Logger log = LoggerFactory.getLogger(this.getClass());

    /**
     * @author Sam Zhang
     * @date 2024/11/6 10:03
     * @Description:
     * @param: jobName:性能测试平台上次的时候,json消息中的job信息
     * @param: bucketName:下载文件所属的bucketName
     * @param: object:下载的文件路径以及文件名称组合
     * @return * @return boolean
    */

    public boolean getMinioFile(String jobName,String bucketName,String object){
        boolean isGetFileSuccess = false;
        ConnectMinio connectMinio = new ConnectMinio();
        MinioClient minioClient = connectMinio.connectMinio();
        try{
            minioClient.downloadObject(
                    DownloadObjectArgs.builder()
                            .bucket(bucketName)
                            .object(object)
                            .filename("files/" + jobName + ".log")
                            .build()
            );
            log.info(jobName + ".log下载完成,目录:files");
            isGetFileSuccess = true;
        }catch (Exception e){
            e.printStackTrace();
        }
        return isGetFileSuccess;
    }
}

其中我们需要对上述内容中的bucketName/object/filename做解释
bucketName:指的是MinIO中的bucketName,从MinIO界面上来说就是界面左侧以下内容
在这里插入图片描述
object:指的是具体的一个文件,比如bucket为sptp下面,我们需要下载文件jmeter.log,它的完整路径就是:jmeter_report/1025/2276/jmeter.log,注意这里看到的sptp为bucket
在这里插入图片描述
filename:指的是你本地存储的文档路径,比如我的工厂代码结构如下
在这里插入图片描述
所以上述代码中,我们的保存路径为

.filename("files/" + jobName + ".log")

3. 结论

本文介绍了如何通过 Java 连接到 MinIO,并实现基本的文件上传和下载功能。MinIO 提供了与 S3 一致的 API,使得在对象存储系统之间迁移变得更加简单。希望这篇文章能够帮助你快速上手 MinIO 的基本操作。


原文地址:https://blog.csdn.net/u012151594/article/details/143615190

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!