1.什么是minio
它是对象存储服务OSS(Object Storage Service)是一种海量、安全、低成本、高可靠的云存储服务,适合存放任意类型的文件。容量和处理能力弹性扩展,多种存储类型供选择,全面优化存储成本。总之是个存储文件的服务器,可以分布式,很强。
2.minio的安装及使用
这里就讲windows版本
- 进入官网:https://min.io/,点击Dowload选择windows下载。
- 下载好放入某个文件夹,打开cmd,进入放入exe的文件夹
- 输入 minio.exe server E:\minio\data,最后这个E…是你存储文件的地址
2.minio的使用
- 进入浏览器输入上面的地址,输入账号密码。
- bucket是水桶的意思,顾名思义其实就是把文件装入的文件夹。创建一个bucket,它就会在你开初输入命令指定的地址下创建一个文件夹,如图:
- 创建bucket后可以上传文件,点击upload,它会出现两个一个是folder(文件夹),一个是file(文件),上传完成后,你可以发现你创建的bucket里多了一个文件,但是它是打不开的,必须通过minio才能使用。
- 如何使用呢?点击上传的文件信息。
你想查看就点击preview,下载就点击download,分享给别人点击share,然后就会生成一条url 。**注意:**给别人分享minio默认会7天有限。 - 如何把分享设为永久有效呢?因为你开发的话不可能只让某张图片文件只有7天有效,只需要bucket的权限设置为public就可以了。然后输入路径
3. springboot集成minio
- 导入依赖
<!--minio-->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.0.3</version>
</dependency>
- yml配置
spring:
# 配置文件上传大小限制
servlet:
multipart:
max-file-size: 200MB
max-request-size: 200MB
minio:
endpoint: http://127.0.0.1:9000 #服务器地址
accessKey: minioadmin #账号
secretKey: minioadmin #密码
bucketName: test #桶名
//创建minioClient对象
MinioClient minio = MinioClient.builder().endpoint(你的地址).credentials(账号,密码).build();
//查看有所有桶
List<Bucket> blist = minio.listBuckets();//它返回的是一个List<Bucket>,在遍历该对象,使用bucket的name方法获取它的名字
for (Bucket b : blist){
b.name();
}
//删除桶
public void removeBucket(RemoveBucketArgs args)
//查看桶是否存在
public boolean bucketExists(BucketExistsArgs args)
//创建一个新桶
public void makeBucket(MakeBucketArgs args)
//遍历一个桶的所有文件
ListObjectsArgs test = ListObjectsArgs.builder().bucket("test").build();//test为桶名
for (Result<Item> listObject : minioClient.listObjects(test)) {
Item item = listObject.get();//一个文件就是一个item
System.out.println(item.objectName());
}
//使用流方式得到文件
public GetObjectResponse getObject(GetObjectArgs args)//Gets data of an object. Returned InputStream must be closed after use to release network resources.
//下载文件
public void downloadObject(DownloadObjectArgs args)//Downloads data of an object to file.
minioClient.downloadObject(DownloadObjectArgs.builder().bucket("test").object("2.png").filename("D:\\4.png").build());
//上传文件
public void uploadObject(UploadObjectArgs args)
minioClient.uploadObject(UploadObjectArgs.builder().bucket("test").object("4.png").filename("D:\\4.png").build());
public ObjectWriteResponse putObject(PutObjectArgs args)//流的形式上文件