手把手教你使用MinIO Java Client

4 篇文章 0 订阅
2 篇文章 1 订阅

手把手教你使用MinIO Java Client

  1. 创建证书时,域名最好指定为顶级域名。
  2. 建议使用minio-8.3.7-all.jar文件
  3. 建议创建桶时,指定region区域范围。

1. 参考官网 MinIO Java Client 实现上传文件

import io.minio.*;
import okhttp3.OkHttpClient;

import javax.net.ssl.*;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Objects;

/**
 * Java MinIO Client
 *
 * 上传文件到指定Bucket桶。
 */
public class MinIOUploadFile {

    private static MinioClient minioClient;
    private static final String END_POINT = "https://oss.test_minio.com:39000";
    private static final String AK = "minio_admin";
    private static final String SK = "minio_admin!@#";
    private static final String DEFAULT_BUCKET = "tx-bucket";
    private static final String REGION = "cn-global-123456";

    public static void main(String[] args) throws Exception {
        MinIOUploadFile client = new MinIOUploadFile();
        client.initConfig();
        // 查询指定region中是否存在tx-bucket桶
        if (!client.isExistBucket(DEFAULT_BUCKET, REGION)) {
            // 桶不存在,创建桶
            client.createBucket(DEFAULT_BUCKET, REGION);
        }
        // 上传文件到指定的桶
        client.uploadFileToBucket(DEFAULT_BUCKET, "C:\\Users\\Administrator\\Downloads\\CN_ORDERACK_07f601bc-fb56-48d9-9a8d-c9ec7dd95872.pdf", "CN_ORDERACK_07f601bc-fb56-48d9-9a8d-c9ec7dd95872.pdf");
    }

    /**
     * 初始化MinIO的配置
     */
    private void initConfig() throws KeyManagementException {
        minioClient = MinioClient.builder()
                .endpoint(END_POINT)
                .credentials(AK, SK)
                .region(REGION) // 自定义region
                .httpClient(Objects.requireNonNull(getUnsafeOkHttpsClient()))
                .build();
    }

    /**
     * 判断指定的桶是否存在
     *
     * @param bucketName 桶名称
     * @param region 区域
     * @return 存在true,否则false
     */
    private boolean isExistBucket(String bucketName, String region) throws Exception {
        return minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).region(region).build());
    }

    /**
     * 创建指定名称的桶
     *
     * @param bucketName 桶名称
     * @param region 区域
     */
    private void createBucket(String bucketName, String region) throws Exception {
        minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).region(region).build());
    }

    private void uploadFileToBucket(String bucketName, String object, String fileName) throws Exception {
        minioClient.uploadObject(UploadObjectArgs.builder()
                                                 .bucket(bucketName)
                                                 .filename(object)
                                                 .object(fileName)
                                                 .build());
    }

    public static OkHttpClient getUnsafeOkHttpsClient() throws KeyManagementException {
        try {
            final TrustManager[] trustAllCerts = new TrustManager[]{
                    new X509TrustManager() {
                        @Override
                        public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {

                        }

                        @Override
                        public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {

                        }

                        @Override
                        public X509Certificate[] getAcceptedIssuers() {
                            return new X509Certificate[]{};
                        }
                    }
            };


            final SSLContext sslContext = SSLContext.getInstance("SSL");
            sslContext.init(null, trustAllCerts, new SecureRandom());
            final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
            OkHttpClient.Builder builder = new OkHttpClient.Builder();
            builder.sslSocketFactory(sslSocketFactory);


            builder.hostnameVerifier(new HostnameVerifier() {
                @Override
                public boolean verify(String s, SSLSession sslSession) {
                    return true;
                }
            });
            return builder.build();

        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }

}

2. 查看web console 画面中是否已经存在上传的文件

在这里插入图片描述

MinIO分布式集群中每个数据目录中都已经存在对应的文件

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值