
Python调用Google Bard API 完整指南
本文介绍了MinIO的常用API及其使用方法,涵盖了如何启动MinIO服务、在SpringBoot中集成MinIO、常用API的使用示例以及对象存储操作等。通过这些内容,您可以快速掌握MinIO的基本使用技巧,包括创建和管理存储桶、上传和下载对象、生成可访问的URL以及对象的复制和删除等操作。本指南提供了详细的代码示例,帮助您更好地理解和应用MinIO的功能。
在本篇文章中,我们将详细介绍MinIO的常用API,并提供具体的代码示例,以帮助您快速入门和掌握MinIO的基本操作。本文还附带了一些相关的图片链接,确保您对MinIO有一个更直观的了解。
在Windows环境下启动MinIO非常简单。首先,您需要下载MinIO的可执行文件,然后运行它。
# 找到minio所在文件地址,运行minio.exe
.minio.exe server E:minio --console-address :9090
E:minio
是项目运行和文件存储的目录。--console-address
指定了 MinIO Web 控制台,9090
是 Web 的运行端口。
通过访问终端显示的地址,您可以打开MinIO的项目页面,并输入终端给出的用户名和密码进行登录。
在SpringBoot项目中集成MinIO可以通过添加相应的依赖开始。下面是如何在SpringBoot中配置MinIO客户端的示例。
io.minio
minio
8.5.9
@Configuration
public class MinIOConfig {
@Bean
public MinioClient minioClient() {
return MinioClient.builder()
.endpoint("http://192.168.202.1:9000")
.credentials("minioadmin", "minioadmin")
.build();
}
}
在不同的系统环境中运行MinIO可能会产生时间误差,例如开发环境为Windows,而MinIO运行在Linux上。为了避免这种情况,可以同步Linux系统时间。
# 安装 ntpdate
yum install ntpdate -y
# 同步时间
ntpdate poll.ntp.org
MinIO的存储结构与传统的文件系统有些不同,它使用桶(Bucket)来管理数据。
bucketExists
方法。boolean exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket("test").build());
System.out.println("test文件夹是否存在:" + exists);
makeBucket
方法。minioClient.makeBucket(MakeBucketArgs.builder().bucket("test").build());
listBuckets
方法。List buckets = minioClient.listBuckets();
for (Bucket bucket : buckets) {
System.out.println("name: " + bucket.name() + ";creationDate: " + bucket.creationDate());
}
removeBucket
方法。minioClient.removeBucket(RemoveBucketArgs.builder().bucket("test").build());
对象(Object)是MinIO中存储的基本单位。
putObject
方法。File file = new File("C:\Users\j9967\Downloads\lifecycle-events.png");
FileInputStream stream = new FileInputStream(file);
ObjectWriteResponse response = minioClient.putObject(PutObjectArgs.builder()
.bucket("test")
.object("my-test.jpg")
.stream(stream, file.length(), -1)
.build());
getObject
方法。GetObjectResponse response = minioClient.getObject(GetObjectArgs.builder()
.bucket("public-readonly-file")
.object("my-public.jpg")
.build());
String fileName = response.object();
response.transferTo(new FileOutputStream("E:\code" + fileName));
listObjects
方法。Iterable<Result> results = minioClient.listObjects(ListObjectsArgs.builder()
.bucket("public-readonly-file")
.build());
for (Result result : results) {
Item item = result.get();
System.out.println(item.lastModified() + "t" + item.size() + "t" + item.objectName());
}
removeObject
方法。minioClient.removeObject(RemoveObjectArgs.builder()
.bucket("public-readonly-file")
.object("my-public.jpg")
.build());
默认情况下,MinIO生成的URL需要签名才能访问。要实现公开访问,可以设置桶的访问策略。
setBucketPolicy
设置为公开读策略。String bucketName = "public-readonly-file";
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
String policyJsonString = "{"Version":"2012-10-17","Statement":[{"Sid":"PublicRead","Effect":"Allow","Principal":{"AWS":"*"},"Action":["s3:GetObject"],"Resource":["arn:aws:s3:::" + bucketName + "/*"]}]}";
minioClient.setBucketPolicy(SetBucketPolicyArgs.builder()
.bucket(bucketName)
.config(policyJsonString)
.build());
通过以上设置,您可以直接访问 public-readonly-file
桶中的文件,而不需要签名。
以上内容展示了如何使用MinIO的API来进行基本操作。希望通过本文的介绍,您能够对MinIO有一个更深入的了解,帮助您在项目中更好地集成和使用MinIO。
.minio.exe server E:minio --console-address :9090
这里,E:minio
是项目运行和文件存储的目录,--console-address
指定了 MinIO Web 控制台的运行端口为 9090
。
pom.xml
添加如下依赖:
io.minio
minio
8.5.9
然后,配置MinIO客户端:
@Configuration
public class MinIOConfig {
@Bean
public MinioClient minioClient() {
return MinioClient.builder()
.endpoint("http://192.168.202.1:9000")
.credentials("minioadmin", "minioadmin")
.build();
}
}
ntpdate
命令来同步时间:
# 安装 ntpdate
yum install ntpdate -y
# 同步时间
ntpdate poll.ntp.org
bucketExists
方法来判断桶是否存在。以下是示例代码:
boolean exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket("test").build());
System.out.println("test文件夹是否存在:" + exists);
setBucketPolicy
方法设置为公开读策略:
String bucketName = "public-readonly-file";
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
String policyJsonString = "{"Version":"2012-10-17","Statement":[{"Sid":"PublicRead","Effect":"Allow","Principal":{"AWS":"*"},"Action":["s3:GetObject"],"Resource":["arn:aws:s3:::" + bucketName + "/*"]}]}";
minioClient.setBucketPolicy(SetBucketPolicyArgs.builder()
.bucket(bucketName)
.config(policyJsonString)
.build());
通过以上设置,您可以直接访问 public-readonly-file
桶中的文件,而不需要签名。