• MinIO快速入门及在项目中的应用



    MinIO 是一款高性能的对象存储软件,兼容 Amazon S3 API,非常适合用于部署私有云存储解决方案。

    1. 下载 MinIO

    首先,下载 MinIO 服务器和客户端(mc)。MinIO 为多种平台提供了预编译的二进制文件。

    对于 Linux 和 macOS 用户:

    可以通过运行以下命令来下载 MinIO 服务器和客户端 mc:

    curl https://dl.min.io/server/minio/release/linux-amd64/minio -o minio
    curl https://dl.min.io/client/mc/release/linux-amd64/mc -o mc
    
    chmod 755 minio mc
    
    对于 Windows 用户:

    可以从 MinIO 官方网站下载 Windows 版本的二进制文件,并解压到一个目录。

    2. 启动 MinIO 服务器

    假设已经有一个本地目录 /tmp/data 作为存储桶的数据目录,可以启动 MinIO 服务器如下:

    ./minio server /tmp/data
    

    如果使用的是 Windows,命令将是:

    minio.exe server C:\path\to\data
    

    这将会启动一个 MinIO 服务器,监听默认端口 9000。

    3. 使用 MinIO 客户端 (mc)

    安装环境变量

    为了方便使用 mc 命令,需要设置一些环境变量:

    export MINIO_ROOT_USER=minioadmin
    export MINIO_ROOT_PASSWORD=minioadmin
    
    初始化 mc

    接下来初始化 mc,指定阿里云存储的地址、访问密钥和密钥密码:

    ./mc config host add myminio http://localhost:9000 minioadmin minioadmin
    
    列出存储桶

    使用 ls 命令查看当前没有存储桶:

    ./mc ls myminio
    
    创建存储桶

    创建一个新的存储桶 mybucket

    ./mc mb myminio/mybucket
    
    上传文件

    上传一个文件到存储桶 mybucket 中:

    ./mc cp /path/to/local/file myminio/mybucket/myfile
    
    下载文件

    从存储桶 mybucket 下载文件到本地:

    ./mc cp myminio/mybucket/myfile /path/to/local/destination
    
    查看文件列表

    列出存储桶 mybucket 中的所有文件:

    ./mc ls myminio/mybucket
    

    4. 使用浏览器访问 MinIO 控制台

    MinIO 提供了一个 Web 控制台界面,可以通过浏览器访问:

    • 打开浏览器,输入 http://localhost:9000/minio
    • 登录页面,使用用户名 minioadmin 和密码 minioadmin 登录。

    5. 在项目中的应用

    在Java项目中使用MinIO可以非常方便地集成对象存储功能。下面是在Java项目中使用MinIO的快速入门指南,包括如何设置依赖、连接MinIO服务器、创建存储桶、上传文件等操作。

    5.1. 添加MinIO依赖

    要在Java项目中使用MinIO,首先需要在项目的pom.xml文件中添加MinIO客户端库的依赖。

    <dependencies>
        
        <dependency>
            <groupId>io.miniogroupId>
            <artifactId>minioartifactId>
            <version>8.9.0version>
        dependency>
    dependencies>
    
    5.2. 连接MinIO服务器

    创建一个MinioClient实例,指定MinIO服务器的URL、访问密钥和密钥密码。

    import io.minio.MinioClient;
    
    public class MinioClientExample {
        public static void main(String[] args) throws Exception {
            String endpoint = "http://localhost:9000";
            String accessKey = "minioadmin";
            String secretKey = "minioadmin";
    
            try {
                MinioClient minioClient = new MinioClient(endpoint, accessKey, secretKey);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    5.3. 创建存储桶

    使用makeBucket方法创建一个名为mybucket的新存储桶。

    import io.minio.MinioClient;
    import io.minio.errors.MinioException;
    
    public class CreateBucketExample {
        public static void main(String[] args) throws Exception {
            String endpoint = "http://localhost:9000";
            String accessKey = "minioadmin";
            String secretKey = "minioadmin";
            String bucketName = "mybucket";
    
            try {
                MinioClient minioClient = new MinioClient(endpoint, accessKey, secretKey);
    
                // 创建存储桶
                minioClient.makeBucket(bucketName);
            } catch (MinioException e) {
                System.err.println("Error occurred: " + e);
            }
        }
    }
    
    5.4. 上传文件

    使用putObject方法将一个本地文件上传到存储桶中。

    import io.minio.MinioClient;
    import io.minio.PutObjectArgs;
    import io.minio.errors.MinioException;
    
    import java.io.File;
    
    public class UploadFileExample {
        public static void main(String[] args) throws Exception {
            String endpoint = "http://localhost:9000";
            String accessKey = "minioadmin";
            String secretKey = "minioadmin";
            String bucketName = "mybucket";
            String objectName = "testfile.txt";
            File file = new File("/path/to/testfile.txt");
    
            try {
                MinioClient minioClient = new MinioClient(endpoint, accessKey, secretKey);
    
                // 上传文件
                minioClient.putObject(PutObjectArgs.builder()
                        .bucket(bucketName)
                        .object(objectName)
                        .filename(file.getAbsolutePath())
                        .build());
            } catch (MinioException e) {
                System.err.println("Error occurred: " + e);
            }
        }
    }
    
    5.5. 下载文件

    使用getObject方法从存储桶中下载文件。

    import io.minio.MinioClient;
    import io.minio.GetPresignedObjectUrlArgs;
    import io.minio.errors.MinioException;
    
    import java.io.File;
    import java.net.URL;
    
    public class DownloadFileExample {
        public static void main(String[] args) throws Exception {
            String endpoint = "http://localhost:9000";
            String accessKey = "minioadmin";
            String secretKey = "minioadmin";
            String bucketName = "mybucket";
            String objectName = "testfile.txt";
            String downloadPath = "/path/to/downloaded/file.txt";
    
            try {
                MinioClient minioClient = new MinioClient(endpoint, accessKey, secretKey);
    
                // 获取文件下载链接
                URL url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder()
                        .method(Method.GET)
                        .bucket(bucketName)
                        .object(objectName)
                        .build());
    
                // 下载文件
                // 使用 Java IO 或其他方式从 URL 下载文件到本地
                // 这里仅展示获取 URL 的过程
                System.out.println("Download URL: " + url);
            } catch (MinioException e) {
                System.err.println("Error occurred: " + e);
            }
        }
    }
    
    5.6. 列出存储桶中的对象

    使用listObjects方法列出存储桶中的所有对象。

    import io.minio.MinioClient;
    import io.minio.errors.MinioException;
    
    import java.util.List;
    import java.util.stream.Collectors;
    
    public class ListObjectsExample {
        public static void main(String[] args) throws Exception {
            String endpoint = "http://localhost:9000";
            String accessKey = "minioadmin";
            String secretKey = "minioadmin";
            String bucketName = "mybucket";
    
            try {
                MinioClient minioClient = new MinioClient(endpoint, accessKey, secretKey);
    
                // 列出存储桶中的所有对象
                List<String> objects = minioClient.listObjects(bucketName).stream()
                        .map(io.minio.ObjectListing.Item::objectName)
                        .collect(Collectors.toList());
                
                System.out.println("Objects in bucket: " + objects);
            } catch (MinioException e) {
                System.err.println("Error occurred: " + e);
            }
        }
    }
    
    5.7. 删除对象

    使用removeObject方法删除存储桶中的对象。

    import io.minio.MinioClient;
    import io.minio.RemoveObjectArgs;
    import io.minio.errors.MinioException;
    
    public class DeleteObjectExample {
        public static void main(String[] args) throws Exception {
            String endpoint = "http://localhost:9000";
            String accessKey = "minioadmin";
            String secretKey = "minioadmin";
            String bucketName = "mybucket";
            String objectName = "testfile.txt";
    
            try {
                MinioClient minioClient = new MinioClient(endpoint, accessKey, secretKey);
    
                // 删除对象
                minioClient.removeObject(RemoveObjectArgs.builder()
                        .bucket(bucketName)
                        .object(objectName)
                        .build());
            } catch (MinioException e) {
                System.err.println("Error occurred: " + e);
            }
        }
    }
    
    5.8. 删除存储桶

    使用removeBucket方法删除存储桶。

    import io.minio.MinioClient;
    import io.minio.RemoveBucketArgs;
    import io.minio.errors.MinioException;
    
    public class DeleteBucketExample {
        public static void main(String[] args) throws Exception {
            String endpoint = "http://localhost:9000";
            String accessKey = "minioadmin";
            String secretKey = "minioadmin";
            String bucketName = "mybucket";
    
            try {
                MinioClient minioClient = new MinioClient(endpoint, accessKey, secretKey);
    
                // 删除存储桶
                minioClient.removeBucket(RemoveBucketArgs.builder()
                        .bucket(bucketName)
                        .build());
            } catch (MinioException e) {
                System.err.println("Error occurred: " + e);
            }
        }
    }
    
  • 相关阅读:
    图解 | 聊聊 MyBatis 缓存
    java spring cloud 企业工程管理系统源码+二次开发+定制化服务
    java实体类中,对某些属性进行equals和hashCode设定,通过对设定属性来判断对象是否相等
    linux环境下安装jenkins(详细图文教程)
    软件设计师案例分析题答案汇总!(2)
    刷题分析工具
    SpringBoot:入门简单使用
    java ssm大学教室管理系统springboot
    IdentityServer4实战详解(HyBrid混合模式篇)
    基于springboot的图书管理系统源码数据库
  • 原文地址:https://blog.csdn.net/weixin_42564451/article/details/141068150