MinIO
MinIO 是一种对象存储解决方案,提供与亚马逊云科技 S3 兼容的 API,并支持所有核心 S3 功能。 MinIO 专为部署在任何地方而构建 - 公共云或私有云、裸机基础架构、编排环境和边缘基础架构。
安装MinIO
官网:
https://dl.min.io/server/minio/release/windows-amd64/minio.exe
本地:D:\minio
无法双击启动需要打开命令提示符(cmd)
需要创建Data文件夹
把minio.exe和Data文件夹放在同一个文件夹中,server后面的地址就是这个文件夹的绝对路径
minio.exe server D:\minio\Data --console-address ":9001"
在网页输入http://127.0.0.1:9000,就可以进入MinIO的登录界面
在代码中实现创建桶并上传和下载
使用MinioClient.builder()
方法创建一个MinioClient
构建器对象,然后使用endpoint()
方法指定Minio服务器的地址(这里是"http://127.0.0.1:9000")
使用credentials()方法指定连接Minio服务器的凭据(这里是用户名和密码)
最后使用build()
方法构建MinioClient
对象。这样,通过minioClient
对象
private static MinioClient minioClient;
static {
//初始化Minio客户端
minioClient = MinioClient.builder()
.endpoint("http://127.0.0.1:9000")
.credentials("minioadmin", "minioadmin")
.build();
}
创建桶
目的是检查指定名称的存储桶是否存在,如果不存在则创建它。如果存储桶已经存在,代码将不执行任何操作。
-
首先,使用
bucketExists
方法检查指定的存储桶是否已经存在。BucketExistsArgs.builder()
用于构建检查存储桶存在性的参数对象。bucketName
是要检查的存储桶的名称。build()
方法用于构建参数对象。minioClient.bucketExists()
方法返回一个布尔值,表示存储桶是否存在。
-
如果存储桶不存在,则使用
makeBucket
方法创建这个存储桶。MakeBucketArgs.builder()
用于构建创建存储桶的参数对象。bucketName
是要创建的存储桶的名称。build()
方法用于构建参数对象。minioClient.makeBucket()
方法用于创建存储桶。
/**
* 创建桶
* @param bucketName 桶的名称
*/
public static void createBucket(String bucketName) throws Exception{
//先判断同是否存在,不存在则创建
if(!minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
}
}
上传文件
minioClient.uploadObject
方法用于将对象上传到MinIO服务器。
/**
* 上传文件
* @param bucketName 桶的名称
* @param remotePath 远程要上传文件的路径
* @param localPath 本地文件路径
*/
public static void upload(String bucketName,String remotePath,String localPath) throws Exception{
minioClient.uploadObject(UploadObjectArgs.builder()
//指定桶的名字
.bucket(bucketName)
//上传的远程文件路径
.object(remotePath)
//本地文件的路径
.filename(localPath)
.build());
}
下载文件
minioClient.downloadObject
方法用于从MinIO服务器下载对象。
/**
* 下载文件
* @param bucket 桶的名称
* @param remotePath 远程文件路径
* @param downloadPath 下载到本地保存的路径
*/
public static void download(String bucket,
String remotePath,
String downloadPath) throws Exception{
minioClient.downloadObject(DownloadObjectArgs.builder()
//指定桶的名字
.bucket(bucketName)
//上传的远程文件路径
.object(remotePath)
//本地文件的路径
.filename(localPath)
.build());
}
Main函数中输出
public class Main {
public static void main(String[] args) throws Exception {
// MinioUtils.createBucket("myapp1");
//启动服务:minio.exe server D:\minio\Data --console-address ":9001"
//上传
// String bucket = "file";
//你要上传到桶的路径
// String remotePath = "image/1.jpg";
//你要上传文件的路径
// String localPath = "C:\\Users\\hamlet\\Pictures\\Camera Roll\\1234.jpg";
// MinioUtils.upload(bucket,remotePath,localPath);
//下载
String bucket = "file";
//你要从桶下载的路径
String remotePath = "image/1.jpg";
//你要下载到哪的路径
String localPath = "C:\\Users\\hamlet\\Pictures\\Camera Roll\\22.jpg";
MinioUtils.download(bucket,remotePath,localPath);
}
}
****
要下载到哪的路径
String localPath = "C:\\Users\\hamlet\\Pictures\\Camera Roll\\22.jpg";
MinioUtils.download(bucket,remotePath,localPath);
}
}