目录

  • 一、概述
  • 二、下载二进制文件安装minio
  • 三、spring boot整合使用minio
    • 1、使用maven引入minio依赖
    • 2、在`application.yml`中定义连接`minio`的参数
    • 3、定义一个`MinioUtil.java`工具类
  • 四、总结

一、概述

最近在学习使用minio,在这里对自己的学习过程做一个记录和总结,方便自己查阅。
Minio是GlusterFS创始人之一Anand Babu Periasamy发布新的开源项目。Minio兼容Amason的S3分布式对象存储项目,采用Golang实现,客户端支持Java、Python、Javacript、 Golang语言。

Minio可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows、Linux、 OS X和FreeBSD上。安装和配置非常简单,基本是复制可执行程序,单行命令就可以运行起来。minio还可以通过容器部署以及部署到k8s集群,详细部署方式可以查看官方文档。

minio中文官方文档地址: https://docs.min.io/cn/
minio的源码地址:https://github.com/minio/minio

二、下载二进制文件安装minio

使用如下命令快速安装一个单机minio

# 下载 minio
wget https://dl.min.io/server/minio/release/linux-amd64/minio
# 添加可执行权限
chmod +x minio
# 设置登录minio的 access key
export MINIO_ACCESS_KEY=minioadmin
# 设置登录minio的 secret key
export MINIO_SECRET_KEY=minioadmin
# 启动 minio
./minio server /data

安装后使用浏览器访问http://127.0.0.1:9000,如果可以访问,则表示minio已经安装成功。输入上面自定义的access key 和 secret key就可以登录了。

三、spring boot整合使用minio

1、使用maven引入minio依赖

在pom.xml中添加如下依赖,minio的最新依赖版本可以到maven中央仓库搜索,这里使用的最新版7.1.0


<properties><minio.version>7.1.0</minio.version>
</properties><!-- minio -->
<dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>${minio.version}</version>
</dependency>

2、在application.yml中定义连接minio的参数

# minio 连接参数
minio:endpoint: 127.0.0.1port: 9000accessKey: minioadminsecretKey: minioadminbucketName: image

3、定义一个MinioUtil.java工具类

@Slf4j
@Component
public class MinioUtils {@Value("${minio.endpoint}")private String endpoint;@Value("${minio.port}")private Integer port;@Value("${minio.accessKey}")private String accessKey;@Value("${minio.secretKey}")private String secretKey;@Value("${minio.bucketName}")private String bucketName;private static MinioClient minioClient;public MinioClient getInstance() {if (minioClient == null) {minioClient = MinioClient.builder().endpoint(endpoint, port, false).credentials(accessKey, secretKey).build();}return minioClient;}/*** * @Description 获取minio所有的桶* @return java.util.List<io.minio.messages.Bucket>**/public List<Bucket> getAllBucket() throws Exception {// 获取minio中所以的bucketList<Bucket> buckets = getInstance().listBuckets();for (Bucket bucket : buckets) {log.info("bucket 名称:  {}      bucket 创建时间: {}", bucket.name(), bucket.creationDate());}return buckets;}/**** @Description  将图片上传到minio服务器* @param inputStream: 输入流* @param objectName: 对象名称* @return void**/public void uploadToMinio(InputStream inputStream, String objectName) {try {long size = inputStream.available();PutObjectArgs putObjectArgs = PutObjectArgs.builder().bucket(bucketName).object(objectName).stream(inputStream, size, -1).build();// 上传到miniogetInstance().putObject(putObjectArgs);inputStream.close();} catch (Exception e) {log.error(e.getMessage());e.printStackTrace();}}/**** @Description 根据指定的objectName获取下载链接,需要bucket设置可下载的策略* @param objectName: 对象的名称* @return java.lang.String**/public String getUrlByObjectName(String objectName) {String objectUrl = null;try {objectUrl = getInstance().getObjectUrl(bucketName, objectName);} catch (Exception e) {log.error(e.getMessage());e.printStackTrace();}return objectUrl;}/*** * @Description 根据objectName从minio中下载文件到指定的目录* @param objectName: objectName* @param fileName: 文件名称* @param dir: 文件目录* @return void**/public void downloadImageFromMinioToFile(String objectName, String fileName, String dir) throws Exception {GetObjectArgs objectArgs = GetObjectArgs.builder().bucket(bucketName).object(objectName).build();File file = new File(dir);if (!file.exists()) {file.mkdirs();}InputStream inputStream = getInstance().getObject(objectArgs);FileOutputStream outputStream =  new FileOutputStream(new File(dir, fileName.substring(fileName.lastIndexOf("/")+1)));int length;byte[] buffer = new byte[1024];while ((length = inputStream.read(buffer)) != -1) {outputStream.write(buffer, 0, length);}outputStream.close();inputStream.close();}}

四、总结

最后做一个总结,这里只是对minio做一个简单的介绍和使用,详细的使用方式需要查阅官方文档。对于一些新的api的学习,最好是直接通过IDE(推荐使用Intellij IDEA)下载源码查看java doc 进行学习,举个例子:当使用minio上传对象,我们不知道该怎么传递参数的时候,我们可以通过IDEA提供的快捷键(ctrl + Q)查看api的java doc, 如下图所示:

这样对于快速掌握api的使用是非常有帮助的。

minio参考学习资料:
minio白皮书:http://www.cloudbin.cn/?p=2917

minio的安装及使用相关推荐

  1. minio 单机版安装

    Minio 单机版安装 1.linux下载minio二进制文件 wget https://dl.min.io/server/minio/release/linux-amd64/minio 官网下载不下 ...

  2. minio:安装部署并安装成windows服务

    前言 关于分布式文件存储,之前我也是使用fastdfs,那为什么突然选择minio? 1.它可以多平台部署 2.搭建起来不是很复杂 3.github近30K的star 什么是minio? 构建高性能的 ...

  3. minio下载安装与API操作

    前言 minio github 地址:https://github.com/minio/minio minio 官网安装包下载地址:https://dl.min.io/server/minio/ mi ...

  4. minio的安装和springboot集成minio

    文章目录 1.什么是minio 1.1 minio的优点 1.2 MinIO的基础概念 1.3 纠删码EC (Erasure Code) 1.4 存储形式 1.5 存储方案 2 MinIO环境搭建 2 ...

  5. MinIO 客户端安装与使用教程

    文章目录 1. 下载安装 1.1 Mac系统 1.2 Windows系统 1.3 Linux系统 2. 使用 2.1 配置MinIO服务器 2.2 创建桶 2.3 查询桶 2.4 命令汇总 3. 参考 ...

  6. minio 单机安装、部署 centos7环境

    文章目录 一.默认模式下载运行 1. 下载 2. 访问minio控制台 3. 创建目录 3. 上传文件 二.企业自定义模式 2.1. 指定用户密码 2.2. 配置目录 2.3. 控制台端口 2.4. ...

  7. 分布式文件存储MinIO、安装和使用

    1.MinIO简介 MinIO是高性能的对象存储,单个对象最大可达5TB.适合存储图片.视频.文档.备份数据.安装包等一系列文件.是一款主要采用Golang语言实现发开的高性能.分布式的对象存储系统. ...

  8. window10安装minio

    1.首先第一步我们先下载minio 可以从官网上下不同的版本 下载地址:MinIO | Code and downloads to create high performance object sto ...

  9. MinIO文件服务器,从安装到使用

    以往的项目,用的比较多的OSS服务是腾讯云和阿里云的存储服务,不过从去年到今年,最近的几个项目,普遍要使用Minio,所以我在开发服务器和测试服务器上都装上了minio 一.首先minio的安装 MI ...

最新文章

  1. Python 办公自动化,一键给PDF文件加密,超方便
  2. 机器学习_周志华_问题汇总_第2周
  3. 计算机音乐乐谱再也没有,再也没有简谱-Ryan.B/杨佬叁演唱-孙世彦制谱
  4. 获取某个周在本年的开始日期和结束日期
  5. Java动态代理全面分析
  6. 系统调用----sandir
  7. 服务器搭建对讲机系统,传统对讲机系统如何接入到融合通信系统?
  8. 中对缺失数据的预处理_数据预处理也有套路的
  9. boost::heap::binomial_heap用法的测试程序
  10. Torus登场:CoreOS打造的新一代分布式存储系统
  11. React 源码系列 | React Context 详解
  12. java pdf stamper_使用pdfstamper(Itext)将页码添加到pdf
  13. Linux之将系统时间设定为24小时制
  14. 你们程序员为什么不靠自己的项目谋生?而必须为其他人打工?
  15. 天文专业转计算机专业,计算机专业以后可以向天文学方向发展吗
  16. 蓝桥杯 填写乘法算式
  17. 关于路缘石滑模机在施工中工艺的一些普及
  18. 近25年科技成果大盘点,有几大重要领域不得不看
  19. 【YOLOP 解读】You Only Look Once for Panoptic Driving Perception
  20. 机顶盒的种类有哪些?

热门文章

  1. 上班族程序员必备的学习网站大全
  2. 一招解决macOS12 CleanMyMac闪退
  3. Win7超级终端查看单片机printf输出
  4. 如何长时间坚持一件事情
  5. 椒图科技发布免费服务器安全产品
  6. LTspice基础教程-013.修改背景色与波形颜色
  7. 《代码整洁之道》目录—导读
  8. jsf的初步使用(包括jsf框架的引入、用户登录、自定义表单验证、valueChangeEvent值变更事件处理做的级联下拉框)
  9. 十分钟教你搭建个人博客
  10. linux下jdk的安装与配置jdk-6u45-linux-i586.bin