什么是MinIO
MinIO是在GUN Affero通用公共许可证 v3.0 下发布的高性能对象存储.他与AmazonS3云存储服务API兼容.使用MinIO为机器学习,分析和应用程序数据工作负载构建高性能基础架构.
MinIO是一个高兴能的对象存储,什么是对象存储(Object Storage Service),对象存储是支持海量用户远程访问的无限容量的廉价的存储系统.
它由桶(bucket,对应了windows中的文件夹),组成的目录结构,桶中直接存放对象,桶中是不能再创建桶的,但是可以创建文件夹
下载和启动本地MinIO
进入官网之后点击右上角的DownLoad 进入下载页面 可以选择对应系统的安装包
我这里下载了windows版本的
windows版本下载之后是只有minio.exe文件的 我们需要创建一个data文件将 然后在打开cmd进入到minio.exe所在的文件夹中 执行
minio server ./data
执行完毕之后就是这样的 我们现在就可以访问自己电脑上的MinIO了
自习看之前的窗口 上面是有账号和密码的
RootUser: minioadmin
RootPass: minioadmin
进入首页后就是要创建桶了,点有上角的Create Bucket进行创建
创建好之后会自动跳转到这个界面
点Upload就可以直接上传文件了
上传后的文件我们要查看的话 选中对应的文件点击右边的Share生成链接然后就可以用别的浏览器进行访问了,但是这样有个问题,只有7天的有效期,如果我们想将文件暴露出去,而不是通过分享这个url来进行访问呢?
那么我们应该直接访问Minio的ip+端口/桶名称/文件名
也就是 http://192.168.51.102:9000/aaaa/7.jpg 这样去访问
但是页面是这样提示的,因为我们没有权限直接这样去访问这个资源
我们可以给他添加权限,首先进入Manager
点击 Access Rules
添加读取readOnly对应的权限是*即拥有所有权限
再去访问的时候就可以直接访问了
集成Java
好了 这个是在windows中使用 使用的 那么我们要如何在java中进行集成呢?
我这里使用了maven来操作
首先让我们导入坐标
io.minio minio 8.3.9 com.squareup.okhttp3 okhttp 4.9.0
Java代码编写上传文件到bucket中
public class FileUploader { public static void main(String[] args) throws Exception{ try { MinioClient minioClient = //创建MinIO Client MinioClient.builder() .endpoint("http://localhost:9000") //输入登录用户名和密码 .credentials("minioadmin", "minioadmin") .build(); //判断我们要上传到的 bucket 是否存在 boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket("huike-crm").build()); if (!found) { minioClient.makeBucket(MakeBucketArgs.builder().bucket("aaaa").build()); } else { System.out.println("Bucket 'aaaa' already exists."); } minioClient.uploadObject(UploadObjectArgs.builder() //上传到那个桶中 .bucket("aaaa") //指定上传MinIO中后叫什么名字 .object("10.jpg") //指定上传的文件路径 .filename("C:\\Users\\Administrator\\Pictures\\Saved Pictures\\10.jpg") .build()); System.out.println("SUCCESS!!!!"); } catch (MinioException e) { System.out.println("Error occurred: " + e); System.out.println("HTTP trace: " + e.httpTrace()); } }}
详细的MinIO Java API 文档 不过这个全是英文的
https://min.io/docs/minio/linux/developers/java/API.html
我翻看了一下 找了几个会常用到的API
removeObject
用来删除桶中指定的文件的
// Remove object.需要在构建MinIO Client对象之后进行调用minioClient.removeObject(RemoveObjectArgs.builder().bucket("my-bucketname").object("my-objectname").build());
downloadObject
下载文件
minioClient.downloadObject( DownloadObjectArgs.builder() .bucket("my-bucketname") .object("my-objectname") .filename("my-object-file") .build());
来源地址:https://blog.csdn.net/c1210283911/article/details/128994825