介绍
MinIO Java SDK 是一个简单易用的 API,旨在访问任何与 Amazon S3 兼容的对象存储服务。它可以让你轻松地利用 MinIO 的强大功能,并使用 Java 进行开发。 以下是使用 MinIO Java SDK 的一些优势:
- 简单易用的 API:无需深入学习复杂的网络编程或 RESTful API 协议即可开始开发应用程序。
- 高性能:通过优化的 HTTP 请求和多线程支持实现高吞吐量和低延迟。
- 安全性:支持各种安全协议,包括 SSL/TLS 加密、身份验证以及数据完整性校验。
- 兼容性:与 Amazon S3 兼容,可以无缝迁移现有应用程序到 MinIO 或与其他 S3 兼容的服务交互。
- 多平台支持:可以在 Windows、macOS 和 Linux 等多个平台上运行,并且支持 Docker 和 Kubernetes 集群部署。
SDK项目github 地址
https://github.com/minio/minio-java
API 文档地址
https://min.io/docs/minio/linux/developers/java/API.html
创建密钥
下载并且导入
build.gradle
dependencies {
implementation("io.minio:minio:8.5.7")
}
创建客户端
MinioClient client = MinioClient.builder()
.endpoint("http://127.0.0.1:9000")
.credentials("V2eI4HdxpJeu1gJN", "6yJVYWUp5YKYY8qPt1YT1zV0pSeOzIfV")
.build();
列出所有的存储桶
MinioClient client = MinioClient.builder()
.endpoint("http://127.0.0.1:9000")
.credentials("V2eI4HdxpJeu1gJN", "6yJVYWUp5YKYY8qPt1YT1zV0pSeOzIfV")
.build();
// 列出所有的存储桶
List<Bucket> buckets = client.listBuckets();
for (Bucket bucket : buckets) {
// 打印存储桶名称
System.out.println(bucket.name());
}
创建存储桶
client.makeBucket(MakeBucketArgs.builder()
// 存储桶名称
.bucket("mytest1")
.objectLock(true)
.build());
上传文件
File file = new File("100.txt");
FileInputStream fileInputStream = new FileInputStream(file);
client.putObject(PutObjectArgs.builder().object(file.getName()).bucket("public").stream(fileInputStream, fileInputStream.available(), 1024 * 1024 * 1024 * 1000).build());
生成下载文件的地址
String downloadUrl = client.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder().method(Method.GET).bucket("public")
.object("100.txt")
.build());
System.out.println(downloadUrl);
http://127.0.0.1:9000/public/100.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=V2eI4HdxpJeu1gJN%2F20231123%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231123T065445Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=b0870161e18c728c1a9601a6efd8e24171d2cf5310ef281045a4bf5e64a7fe75
完整案例github地址
https://github.com/code-mm/java-minio-sdk-example.git