Minio使用教程
一、概述
1、官方文档
中文文档:http://docs.minio.org.cn/docs/master/java-client-api-reference
英文文档:https://docs.min.io/docs/java-client-api-reference.html
注意:中文文档更新较慢,会和最新版本的客户端API不兼容。如果使用最新的客户端API,最好看英文文档,否则会有很多坑。
2、参考文档
Minio入门系列(Minio8.x)
https://blog.csdn.net/qq_43437874/category_10562215.html
主要基于2021版本的minio来介绍的,使用的java客户端版本为 8.3.1。
SpringBoot集成Minio7.x文件存储服务器(包含服务器安装搭建)
https://blog.csdn.net/weixin_44248000/article/details/124118290
二、Java案例(7.x)
1、引入pom.xml
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.0.2</version>
</dependency>
2、java代码
package work.vcloud.exam.controller.test.minio;
import io.minio.MinioClient;
import io.minio.PutObjectOptions;
import io.minio.Result;
import io.minio.messages.Bucket;
import io.minio.messages.Item;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;
public class MinioDemo {
public static void main(String[] args) {
try {
String accessKey = "Minio";
String secretKey = "Test123456";
//String endpoint = "http://192.168.1.115:9000";
String endpoint = "http://centos115:9000";
String bucketName = "resource";
// 使用MinIO服务的URL,端口,Access key和Secret key创建一个MinioClient对象
MinioClient minioClient = new MinioClient(endpoint, accessKey, secretKey);
// 检查存储桶是否已经存在
String test_bucketName = "asiatrip";
boolean isExist = minioClient.bucketExists(test_bucketName);
System.out.println(isExist);
if (!isExist) {
minioClient.makeBucket(test_bucketName);
}
// 移除存储桶
minioClient.removeBucket(test_bucketName);
// 遍历所有桶
List<Bucket> buckets = minioClient.listBuckets();
if (buckets != null && !buckets.isEmpty()) {
buckets.forEach(bucket -> {
System.out.println(bucket.name());
});
}
String objectName = "Downloads/movie.mp4";
// 使用putObject上传一个文件到存储桶中。
File file = new File("C:\\Users\\jiuhui-4\\Downloads\\movie.mp4");
InputStream is = new FileInputStream(file);
// 使用putObject上传一个本地文件到存储桶中。
minioClient.putObject(bucketName, objectName, is, new PutObjectOptions(is.available(), -1));
is.close();
// 获取对象url
String file_url = minioClient.getObjectUrl(bucketName, "movie.mp4");
System.out.println(file_url);
// 删除对象
minioClient.removeObject(bucketName, "movie.mp4");
//if (1 == 1) return;
// 列出'my-bucketname'里的对象
Iterable<Result<Item>> myObjects = minioClient.listObjects(bucketName);
for (Result<Item> result : myObjects) {
Item item = result.get();
System.out.println(item.lastModified() + ", " + item.size() + ", " + item.objectName());
}
// 分享连接
String url = minioClient.presignedGetObject(bucketName, objectName, 60 * 60 * 24);
System.out.println(url);
} catch (Exception e) {
e.printStackTrace();
}
}
}
3、更多案例
更多使用案例可以参考下面的文档。因为官网随时可能更新,所以我吧7.x版本的文档保存下来了。
[Minio Java 文档(7.X)](Minio Java 文档(7.X))
MinIO 帮助文档
https://www.wenjiangs.com/docs/minio