# JAVA API 操作

# 获取 MinioClient

public class MinIoTest {
    public static void main(String[] args) {
        MinioClient minioClient = MinioClient
                .builder()
                .endpoint("http://localhost:9000/")
                .credentials("username","password")
                .build();
    }
}

# 参数解释

  • endpoint:Minio的通信地址
  • credentials:
    • accessKey: 用户名
    • secretKey: 密码

# 判断 Bucket 是否存在

public class MinIoTest {
    public static void main(String[] args) {
        MinioClient minioClient = MinioClient
                .builder()
                .endpoint("http://localhost:9000/")
                .credentials("username","password")
                .build();

        try {
            boolean minioTest = minioClient.bucketExists(BucketExistsArgs.builder().bucket("testbucket").build());
            System.out.println("bucket minioTest 存在状态" + minioTest);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

# 创建 Bucket

public class MinIoTest {
    public static void main(String[] args) {
        MinioClient minioClient = MinioClient
                .builder()
                .endpoint("http://124.222.183.73:9000/")
                .credentials("username","password")
                .build();

        try {
            boolean minioTest = minioClient.bucketExists(BucketExistsArgs.builder().bucket("testbucket").build());
            System.out.println("bucket minioTest 存在状态" + minioTest);

            if (!minioTest) {
                System.out.println("bucket 不存在 创建bucket");
                minioClient.makeBucket(MakeBucketArgs.builder().bucket("testbucket").build());
                System.out.println("新建完成");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

# 上传文件

# 路径上传


public class MinIoTest {
    public static void main(String[] args) {
        MinioClient minioClient = MinioClient
                .builder()
                .endpoint("http://124.222.183.73:9000/")
                .credentials("username","password")
                .build();

        try {
            boolean minioTest = minioClient.bucketExists(BucketExistsArgs.builder().bucket("testbucket").build());
            System.out.println("bucket minioTest 存在状态" + (minioTest == true ? "存在" : "不存在"));

            if (!minioTest) {
                System.out.println("bucket 不存在 创建bucket");
                minioClient.makeBucket(MakeBucketArgs.builder().bucket("testbucket").build());
                System.out.println("新建完成");
            }

            ClassPathResource resource = new ClassPathResource("video/testVideo.mp4");
            System.out.println("开始上传文件");
            ObjectWriteResponse testbucket = minioClient.uploadObject(
                    UploadObjectArgs.builder()
                            .bucket("testbucket")
                            .object("testUpload.mp4")
                            .filename(resource.getFile().getAbsolutePath())
                            .build()
            );

            System.out.println("上传完成");
            System.out.println("testbucket" + testbucket);
    }
}

# 流式上传

public class MinIoTest {
    public static void main(String[] args) {
        MinioClient minioClient = MinioClient
                .builder()
                .endpoint("http://124.222.183.73:9000/")
                .credentials("username","password")
                .build();

        try {
            boolean minioTest = minioClient.bucketExists(BucketExistsArgs.builder().bucket("testbucket").build());
            System.out.println("bucket minioTest 存在状态" + (minioTest == true ? "存在" : "不存在"));

            if (!minioTest) {
                System.out.println("bucket 不存在 创建bucket");
                minioClient.makeBucket(MakeBucketArgs.builder().bucket("testbucket").build());
                System.out.println("新建完成");
            }
          ClassPathResource resource = new ClassPathResource("video/testVideo.mp4");
            ObjectWriteResponse testbucket = minioClient.putObject(
                    PutObjectArgs
                            .builder()
                            .bucket("testbucket")
                            .object("testUpload.mp4")
                            .stream(resource.getInputStream(), resource.contentLength(), -1)
                            .build()
            );

            System.out.println("上传完成");
            System.out.println("testbucket" + testbucket);
    }
}

# 读取文件


public class MinIoTest {
    public static void main(String[] args) {
        MinioClient minioClient = MinioClient
                .builder()
                .endpoint("http://124.222.183.73:9000/")
                .credentials("username","password")
                .build();

        try {
            boolean minioTest = minioClient.bucketExists(BucketExistsArgs.builder().bucket("testbucket").build());
            System.out.println("bucket minioTest 存在状态" + (minioTest == true ? "存在" : "不存在"));

            if (!minioTest) {
                System.out.println("bucket 不存在 创建bucket");
                minioClient.makeBucket(MakeBucketArgs.builder().bucket("testbucket").build());
                System.out.println("新建完成");
            }

            ObjectWriteResponse testbucket = minioClient.putObject(
                    PutObjectArgs
                            .builder()
                            .bucket("testbucket")
                            .object("testUpload.mp4")
                            .stream(resource.getInputStream(), resource.contentLength(), -1)
                            .build()
            );

            System.out.println("上传完成");
            System.out.println("testbucket" + testbucket);

            try (
                    InputStream is = minioClient.getObject(
                            GetObjectArgs.builder()
                                    .bucket(testbucket.bucket())
                                    .object(testbucket.object())
                                    .build()
                    );
                    //可以不导出,因为 minio 提供了下载的方法
                    OutputStream os = new FileOutputStream("C:/Users/GaoLiang/Desktop/--" + testbucket.object())

            ) {

                byte[] flush = new byte[1024 * 1024];
                int len = -1;
                while ((len = is.read(flush)) != -1) {
                    os.write(flush, 0, len);  // 将读取的数据写入输出流
                }
                os.flush();
                System.out.println();
                System.out.println("下载完成");

            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

# 删除文件

public class MinIoTest {
    public static void main(String[] args) {
        MinioClient minioClient = MinioClient
                .builder()
                .endpoint("http://124.222.183.73:9000/")
                .credentials("username","password")
                .build();

        try {
            boolean minioTest = minioClient.bucketExists(BucketExistsArgs.builder().bucket("testbucket").build());
            System.out.println("bucket minioTest 存在状态" + (minioTest == true ? "存在" : "不存在"));

            if (!minioTest) {
                System.out.println("bucket 不存在 创建bucket");
                minioClient.makeBucket(MakeBucketArgs.builder().bucket("testbucket").build());
                System.out.println("新建完成");
            }

            ClassPathResource resource = new ClassPathResource("video/testVideo.mp4");
            ObjectWriteResponse testbucket = minioClient.putObject(
                    PutObjectArgs
                            .builder()
                            .bucket("testbucket")
                            .object("testUpload.mp4")
                            .stream(resource.getInputStream(), resource.contentLength(), -1)
                            .build()
            );

            System.out.println("上传完成");
            System.out.println("testbucket" + testbucket);


        minioClient.removeObject(
                RemoveObjectArgs.builder()
                        .bucket(testbucket.bucket())
                        .object(testbucket.object())
                        //可选
                        //.versionId(testbucket.versionId())
                        .build()
        );

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

# 下载文件


public class MinIoTest {
    public static void main(String[] args) {
        MinioClient minioClient = MinioClient
                .builder()
                .endpoint("http://124.222.183.73:9000/")
                .credentials("username","password")
                .build();

        try {
            boolean minioTest = minioClient.bucketExists(BucketExistsArgs.builder().bucket("testbucket").build());
            System.out.println("bucket minioTest 存在状态" + (minioTest == true ? "存在" : "不存在"));

            if (!minioTest) {
                System.out.println("bucket 不存在 创建bucket");
                minioClient.makeBucket(MakeBucketArgs.builder().bucket("testbucket").build());
                System.out.println("新建完成");
            }

            ClassPathResource resource = new ClassPathResource("video/testVideo.mp4");
            ObjectWriteResponse testbucket = minioClient.putObject(
                    PutObjectArgs
                            .builder()
                            .bucket("testbucket")
                            .object("testUpload.mp4")
                            .stream(resource.getInputStream(), resource.contentLength(), -1)
                            .build()
            );

            System.out.println("上传完成");
            System.out.println("testbucket" + testbucket);


            minioClient.downloadObject(
                    DownloadObjectArgs.builder()
                            .bucket(testbucket.bucket())
                            .object(testbucket.object())
                            .filename("C:/Users/GaoLiang/Desktop/" + testbucket.object())
                            .build()
            );

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

# 统计对象

public class MinIoTest {
    public static void main(String[] args) throws Exception {
        MinioClient minioClient = MinioClient
                .builder()
                .endpoint("http://124.222.183.73:9000/")
                .credentials("username", "password")
                .build();

        Iterable<Result<Item>> objects = minioClient.listObjects(
                ListObjectsArgs.builder().bucket("testbucket").build()
        );

        for (Result<Item> object : objects) {
            Item item = object.get();
            System.out.println(item.objectName());
            System.out.println(item.versionId());
            System.out.println(item.size());
            System.out.println(item.etag());
            System.out.println(item.isDir());
            System.out.println(item.isDeleteMarker());

        }
    }
}

# 生成访问连接


public class MinIoTest {
    public static void main(String[] args) throws Exception {
        MinioClient minioClient = MinioClient
                .builder()
                .endpoint("http://124.222.183.73:9000/")
                .credentials("username", "password")
                .build();

        boolean minioTest = minioClient.bucketExists(BucketExistsArgs.builder().bucket("testbucket").build());
        System.out.println("bucket minioTest 存在状态" + (minioTest == true ? "存在" : "不存在"));

        if (!minioTest) {
            System.out.println("bucket 不存在 创建bucket");
            minioClient.makeBucket(MakeBucketArgs.builder().bucket("testbucket").build());
            System.out.println("新建完成");
        }
        ClassPathResource resource = new ClassPathResource("video/uTools_1687237919654.png");
        ObjectWriteResponse testbucket = minioClient.putObject(
                PutObjectArgs
                        .builder()
                        .bucket("testbucket")
                        .object("uTools_1687237919654.png")
                        .stream(resource.getInputStream(), resource.contentLength(), -1)
                        .build()
        );

        System.out.println("上传完成");
        System.out.println("testbucket" + testbucket);

        String presignedObjectUrl = minioClient.getPresignedObjectUrl(
                GetPresignedObjectUrlArgs.builder()
                        .method(Method.GET)
                        .bucket(testbucket.bucket())
                        .object(testbucket.object())
                        .expiry(2, TimeUnit.HOURS)
                        .build()
        );


      //注意这里需要把拼接的参数删除,不然会携带很多其他的信息,比如用户名,
      //还有把 Bucket 设置为public,不然没法访问
      presignedObjectUrl = presignedObjectUrl.substring(0, presignedObjectUrl.indexOf("?"));
      System.out.println(presignedObjectUrl);

    }
}