MinIO API文档快速入门
本文介绍了MinIO的常用API及其使用方法,涵盖了如何启动MinIO服务、在SpringBoot中集成MinIO、常用API的使用示例以及对象存储操作等。通过这些内容,您可以快速掌握MinIO的基本使用技巧,包括创建和管理存储桶、上传和下载对象、生成可访问的URL以及对象的复制和删除等操作。本指南提供了详细的代码示例,帮助您更好地理解和应用MinIO的功能。
MinIO 常用 API 快速入门
在本篇文章中,我们将详细介绍MinIO的常用API,并提供具体的代码示例,以帮助您快速入门和掌握MinIO的基本操作。本文还附带了一些相关的图片链接,确保您对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 集成
在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
MinioClient 常用 API
操作 Bucket
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
对象(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());
公开 URL 访问权限
默认情况下,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。
FAQ
问:如何在Windows环境下启动MinIO?
- 答:在Windows环境下启动MinIO非常简单。首先,您需要下载MinIO的可执行文件,然后运行它。通过以下命令来启动:
.minio.exe server E:minio --console-address :9090
这里,
E:minio
是项目运行和文件存储的目录,--console-address
指定了 MinIO Web 控制台的运行端口为9090
。
问:如何在SpringBoot项目中集成MinIO?
- 答:在SpringBoot项目中集成MinIO可以通过添加MinIO的依赖来实现。首先,在项目的
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(); } }
问:如何解决不同系统环境下的时间误差问题?
- 答:在不同的系统环境中运行MinIO可能会产生时间误差,特别是当开发环境为Windows,而MinIO运行在Linux上。为了解决这个问题,可以同步Linux系统时间。可以使用
ntpdate
命令来同步时间:# 安装 ntpdate yum install ntpdate -y # 同步时间 ntpdate poll.ntp.org
问:如何使用MinIO API判断桶(Bucket)是否存在?
- 答:可以使用MinIO的
bucketExists
方法来判断桶是否存在。以下是示例代码:boolean exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket("test").build()); System.out.println("test文件夹是否存在:" + exists);
问:如何设置MinIO的公开URL访问权限?
- 答:默认情况下,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
桶中的文件,而不需要签名。
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- Python调用免费翻译API实现Excel文件批量翻译
- 为开源项目 go-gin-api 增加 WebSocket 模块
- AI编程的风险,如何毁掉你的 API?
- 使用预约调度API的运输管理
- Claude 免费用户频繁被限流?实用应对策略推荐
- 如何获取谷歌新闻 API Key 密钥(分步指南)
- API 目录 – 什么是 API 目录?
- 用NestJS和Prisma: Authentication构建一个REST API
- DeepSeek – Anakin.ai 的 Reason 模型 API 价格是多少?
- 19个API安全最佳实践,助您实现安全
- 如何免费调用Kimi API实现项目集成
- 探索 Zomato API 的潜力