MinIO是一个高性能对象存储服务。
浏览器地址:http://localhost:9000
默认账号:minioadmin
默认密码:minioadmin
常用命令
minio -h:查看帮助
minio server /path/to/saveDir:启动对象存储服务
minio gateway:启动对象存储网关
minio server帮助
minio server /path/to/saveDir -–address 127.0.0.1:9000
开发指南
1、依赖项。
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.3.5</version>
</dependency>
2、创建Bucket并上传文件。
import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.UploadObjectArgs;
public class Application {
public static void main(String[] args) throws Exception {
MinioClient minioClient = MinioClient.builder()
.endpoint("http://localhost:9000")
.credentials("minioadmin", "minioadmin")
.build();
// 创建bucket
String bucketName = "test";
boolean found = minioClient.bucketExists(
BucketExistsArgs.builder().bucket(bucketName).build()
);
if (!found) {
minioClient.makeBucket(
MakeBucketArgs.builder().bucket(bucketName).build()
);
} else {
System.out.println("Bucket 'test' already exists.");
}
// 上传文件
String objectName = "face.png";
String fileName = "C:\\Users\\liteng\\Pictures\\BiazfanxmamNRoxxVxka.png";
minioClient.uploadObject(
UploadObjectArgs.builder().bucket(bucketName).object(objectName).filename(fileName).build()
);
System.out.println(
String.format
("'%s' is successfully uploaded as object '%s' to bucket '%s'.", fileName, objectName, bucketName)
);
}
}
3、 列出所有、判断是否存在、添加、删除bucket。
import io.minio.*;
import io.minio.messages.Bucket;
import java.time.format.DateTimeFormatter;
import java.util.List;
public class Application {
public static void main(String[] args) throws Exception {
MinioClient minioClient = MinioClient.builder()
.endpoint("http://localhost:9000")
.credentials("minioadmin", "minioadmin")
.build();
// 列出bucket
System.out.println("list buckets: ");
List<Bucket> buckets = minioClient.listBuckets();
for (Bucket bucket : buckets) {
System.out.println(String.format("%s: %s",
bucket.name(),
bucket.creationDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))));
}
// 创建bucket
String bucketName = "test";
boolean found = minioClient.bucketExists(
BucketExistsArgs.builder().bucket(bucketName).build()
);
if (!found) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
System.out.printf("create bucket '%s' successfully\n", bucketName);
} else {
System.out.printf("bucket '%s' is already exists\n", bucketName);
}
// 删除bucket(bucket必须为空才能删除)
minioClient.removeBucket(RemoveBucketArgs.builder().bucket(bucketName).build());
System.out.printf("remove bucket `%s` successfully\n", bucketName);
}
}
4、创建、上传、列出所有、获取、获取文件地址、移除文件。
import io.minio.*;
import io.minio.http.Method;
import io.minio.messages.Item;
import java.io.FileOutputStream;
import java.time.format.DateTimeFormatter;
public class Application {
public static void main(String[] args) throws Exception {
MinioClient minioClient = MinioClient.builder()
.endpoint("http://localhost:9000")
.credentials("minioadmin", "minioadmin")
.build();
// 创建bucket
String bucketName = "test";
boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
if (!found) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
}
// 上传文件
String objectName = "face.png";
String fileName = "C:\\Users\\liteng\\Pictures\\BiazfanxmamNRoxxVxka.png";
minioClient.uploadObject(
UploadObjectArgs.builder().bucket(bucketName).object(objectName).filename(fileName).build()
);
System.out.println("upload successfully");
// 列出文件
Iterable<Result<Item>> files = minioClient.listObjects(ListObjectsArgs.builder().bucket(bucketName).build());
for (Result<Item> item : files) {
Item file = item.get();
System.out.printf("%s\t\t%s\n", file.objectName(), file.lastModified().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
}
// 获取文件
GetObjectResponse resonse = minioClient.getObject(GetObjectArgs.builder().bucket(bucketName).object(objectName).build());
byte[] bytes = new byte[1024];
int len;
FileOutputStream out = new FileOutputStream("D:\\1.png");
while ((len = resonse.read(bytes, 0, 1024)) > 0) {
out.write(bytes, 0, len);
}
out.close();
resonse.close();
// 获取文件地址
String url = minioClient.getPresignedObjectUrl(
GetPresignedObjectUrlArgs.builder().bucket(bucketName).object(objectName).method(Method.GET).build()
);
System.out.printf("url: %s\n", url);
// 移除文件
minioClient.removeObject(RemoveObjectArgs.builder().bucket(bucketName).object(objectName).build());
System.out.printf("remove %s successfully\n", objectName);
}
}