Minio
Minio是什么?
MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
分布式的文件存储系统,类似FastDFS、七牛云对象存储、阿里云对象存储…等等,可用于存储文件。
为什么使用Minio?
支持分布式(多盘、多机)。
部署简单docker run -p 9000:9000 minio/minio server /data
即可,比FastDFS简单多了。
MinIO存储桶通知功能:存储桶(Bucket)如果发生改变,比如上传对象和删除对象,可以使用存储桶事件通知机制进行监控。
支持多租户。
全面文档支持。
开始使用
安装
本篇采用Docker部署的方式,命令: docker run -p 9000:9000 minio/minio server /data
访问ip:9000即可访问minio可视化界面,MINIO_ACCESS_KEY默认minioadmin,MINIO_SECRET_KEY默认minioadmin。
Java集成
添加依赖
1 2 3 4 5 <dependency > <groupId > io.minio</groupId > <artifactId > minio</artifactId > <version > 7.1.4</version > </dependency >
基本使用方式
创建连接
1 MinioClient instance = MinioClient.builder().endpoint("http://ip:port" ).credentials("minioadmin" ,"minioadmin" ).build();
桶操作
判断桶是否存在
1 2 instance.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())
创建桶
1 2 instance.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
删除桶
1 2 instance.removeBucket(RemoveBucketArgs.builder().bucket(bucketName).build());
文件操作
本地文件上传
1 2 3 4 instance.uploadObject(UploadObjectArgs.builder(). bucket(bucket) .object(objectName) .filename(fileName).build());
流文件上传
1 2 3 4 5 6 7 File file = new File("C:\\\\Users\\\\G006648\\\\Pictures\\\\lufei.gif" ); InputStream out = new FileInputStream(file); instance.putObject(PutObjectArgs.builder() .bucket(bucket) .object(objectName) .stream(out,file.length(),1024L *10 *1024 ) .contentType(contentType).build());
删除文件
1 instance.removeObject(RemoveObjectArgs.builder().bucket(bucket).object(object).build());
附录