手把手教你使用MinIO Java Client
- 创建证书时,域名最好指定为顶级域名。
- 建议使用minio-8.3.7-all.jar文件
- 建议创建桶时,指定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分布式集群中每个数据目录中都已经存在对应的文件