上篇文章中使用了MinIO中文官网的Java API示例进行了验证,版本与当前稳定版本相比过旧,在英文官网发现了最新的API使用方式,在此文中进行验证。
目录
- 旧版验证详细
- 升至7.1.4版本的问题
- 使用示例
-
- Pom文件
- 代码示例
- 执行与结果确认
- 总结
旧版验证详细
MinIO Java Client SDK(3.0.10)的使用示例可参看如下内容:
- https://liumiaocn.blog.csdn.net/article/details/109460948
升至7.1.4版本的问题
Maven使用如下版本之后,上述代码编译无法通过
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.1.4</version>
</dependency>
主要问题如下:
- MinioClient的构造函数方式变为从builder里获取
修改前:MinioClient minioClient = new MinioClient(“http://localhost:9000”, “liumiao”, “password”);
修改后:
MinioClient minioClient =MinioClient.builder()
.endpoint("http://localhost:9000")
.credentials("liumiao", "password")
.build();
- 检查存储桶是否存在的方式
修改前:boolean isExist = minioClient.bucketExists(“newbucket”);
修改后:boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(“newbucket”).build());
同时需要将 io.minio.BucketExistsArgs给import进来,官方最新示例中缺少此行内容
- 创建存储桶的方式
修改前:minioClient.makeBucket(“newbucket”);
修改后:minioClient.makeBucket(MakeBucketArgs.builder().bucket(“newbucket”).build());
添加如下import内容
import io.minio.MakeBucketArgs;
- 文件上传的方式
由于文件上传的函数添加了第四个参数,所以旧版程序可能会编译无法通过
修改前:minioClient.putObject(“newbucket”,“local-file-list.info”, “/Users/liumiao/local-file-list.info”);
修改后:minioClient.putObject(“newbucket”,“local-file-list.info”, “/Users/liumiao/local-file-list.info”,null);
目前官方的示例也是使用这种方式,但是这种写法在MinIO中依然是depressed,所以可以使用如下的方式:
minioClient.uploadObject(UploadObjectArgs.builder()
.bucket("anotherbucket").object("local-file-list.info").filename("/Users/liumiao/local-file-list.info").build());
使用示例
Pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>liumiaocn</groupId>
<artifactId>minio</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.1.4</version>
</dependency>
</dependencies>
</project>
代码示例
import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.UploadObjectArgs;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.security.InvalidKeyException;
import io.minio.MinioClient;
import io.minio.errors.MinioException;
public class MinIOFileUploader {
public static void main(String[] args) throws NoSuchAlgorithmException, IOException, InvalidKeyException {
try {
// 使用MinIO服务的URL,端口,Access key和Secret key创建一个MinioClient对象
MinioClient minioClient =MinioClient.builder()
.endpoint("http://localhost:9000")
.credentials("liumiao", "password")
.build();
// 检查存储桶是否已经存在
boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket("anotherbucket").build());
if(isExist) {
System.out.println("Bucket already exists.");
} else {
// 创建一个名为newbucket的存储桶。
minioClient.makeBucket(MakeBucketArgs.builder().bucket("anotherbucket").build());
}
// 使用putObject上传一个文件到存储桶中。
minioClient.uploadObject(UploadObjectArgs.builder()
.bucket("anotherbucket").object("local-file-list.info").filename("/Users/liumiao/local-file-list.info").build());
System.out.println("/Users/liumiao/local-file-list.info is successfully uploaded as local-file-list.info to `anotherbucket` bucket.");
} catch(MinioException e) {
System.out.println("Error occurred: " + e);
}
}
}
执行与结果确认
这里将存储桶的名称改为anotherbucket,执行并确认结果如下
- 执行上述程序
然后从MinIO中就可以看到创建的新存储桶和文件的信息了
总结
这篇文章继续更新了一下最新版本的MinIO中如何使用Java API进行存储桶的创建和文件上传的操作方法。