安装MinIO和使用MinIO Java SDK实现对文件的基本操作
文章目录
- 一、MinIO 简介
- 二、安装 MinIO
- 1. 使用 Docker 安装 MinIO
- 2. 进入到 MinIO 的控制台页面
- 3. 创建 Bucket
- 4. 修改 Bucket 的 Access Policy
- 三、使用 MinIO Java SDK 实现对文件的基本操作
- 1. 添加 Maven 依赖
- 2. 创建一个 minioClient
- 3. 上传文件到指定 Bucket 的根目录下
- 4. 上传文件到指定 Bucket 的多级目录下
- 5. 删除文件
- 6. 下载文件
- 7. 完整测试代码
- 四、参考
一、MinIO 简介
MinIO 是一款高性能、分布式的对象存储系统. 它是一款软件产品, 可以100%的运行在标准硬件。MinIO 在传统对象存储用例(例如辅助存储,灾难恢复和归档)方面表现出色。
二、安装 MinIO
本文是在虚拟机里的 CentOS7 系统下安装 MinIO
1. 使用 Docker 安装 MinIO
首先,新建文件夹:
mkdir -p ~/minio/data
注: 我是用
root
用户登录,所以执行命令后新建了目录/root/minio/data
然后,使用 Docker 安装和运行 MinIO:
docker run \--restart=always \-d \-p 9000:9000 \-p 9090:9090 \--name minio \-v ~/minio/data:/data \-e "MINIO_ROOT_USER=minioadmin" \-e "MINIO_ROOT_PASSWORD=minioadmin" \quay.io/minio/minio server /data --console-address ":9090"
注:
如果还没有安装 Docker 可以参考文章:CentOS7安装Docker
默认情况下,MinIO 会在每次服务器启动时为 MinIO 控制台选择一个随机端口。访问 MinIO 服务器的浏览器客户端会自动重定向到动态选择的端口上的 MinIO 控制台。
使用
--console-address ":9090"
指定了 MinIO 控制台的静态端口为:9090如果无法访问 9000 和 9090 端口,可能是端口没开放,可以通过以下命令来查询和开放端口:
查询端口是否开放
firewall-cmd --query-port=端口号/协议
例:查询 9000 端口是否开放
firewall-cmd --query-port=9000/tcp
打开端口
firewall-cmd --permanent --add-port=端口号/协议
例:打开 9000 端口
firewall-cmd --permanent --add-port=9000/tcp
重新载入
firewall-cmd --reload
2. 进入到 MinIO 的控制台页面
用 Docker 成功安装和运行 MinIO 后,访问:http://192.168.200.128:9090/ 进入到 MinIO 的控制台页面
注: 这里的地址
http://192.168.200.128:9090/
是我虚拟机的 ip 地址,访问时要以自己实际的 ip 地址为主, Linux 系统下可通过ifconfig
命令来查看本机的 ip 地址
这里的 Username 和 Password 都是:minioadmin
注: 可以在使用 Docker 运行 MinIO 时通过
-e "MINIO_ROOT_USER=minioadmin"
和
-e "MINIO_ROOT_PASSWORD=minioadmin"
来指定 Username 和 Password
如果MINIO_ROOT_USER
或MINIO_ROOT_PASSWORD
未设置,则它们都默认为minioadmin
成功登录进入后,可以看到该页面:
3. 创建 Bucket
点击 Create a Bucket 创建一个 Bucket
输入要创建的 Bucket 名称,然后点击 Create Bucket 即可创建一个 Bucket ,这里创建一个名为:test-bucket 的 Bucket
可以在 Administrator 下面的 Buckets 里查看和管理创建的 Bucket
4. 修改 Bucket 的 Access Policy
点击 test-bucket 进入到该 Bucket 的设置页面
这里要将 test-bucket 的 Access Policy 修改为 public,设置为 public 后所有的用户都可以直接通过链接来访问对象
三、使用 MinIO Java SDK 实现对文件的基本操作
1. 添加 Maven 依赖
<dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.1</version>
</dependency>
注意: 最低要求 JDK8 及以上版本
2. 创建一个 minioClient
private static final MinioClient minioClient =MinioClient.builder().endpoint("http://192.168.200.128:9000").credentials("minioadmin", "minioadmin").build();
- endpoint 方法里的参数按实际情况填 MinIO 的服务地址
- credentials 方法里的参数按实际情况分别填上对应的 Username 和 Password(accessKey 和 secretKey)
3. 上传文件到指定 Bucket 的根目录下
@Test
void testUploadObject() {try {UploadObjectArgs uploadObjectArgs = UploadObjectArgs.builder().bucket("test-bucket").object("pic.jpg").filename("D:\\images\\pic.jpg").build();minioClient.uploadObject(uploadObjectArgs);System.out.println("上传成功!");} catch (Exception e) {System.out.println("上传失败!");}
}
该方法将D:\\images\\pic.jpg
文件上传到 MinIO 的test-bucket
上保存为pic.jpg
我们可以在 MinIO 的控制台中查看是否上传成功:
可以看到D:\\images\\pic.jpg
文件成功上传到 MinIO 的 test-bucket 上,文件名为 pic.jpg
我们还可以通过访问http://192.168.200.128:9000/test-bucket/pic.jpg来查看该文件
注: 在 MinIO 中存储文件的地方称为 Bucket ,Bucket 中的文件是一个 object
这里 test-bucket 就是一个 Bucket ,里面的文件 pic.jpg 是该 Bucket 的 object
4. 上传文件到指定 Bucket 的多级目录下
@Test
void testUploadObject2() {try {UploadObjectArgs uploadObjectArgs = UploadObjectArgs.builder().bucket("test-bucket").object("2023/1/14/pic.jpg").filename("D:\\images\\pic.jpg").build();minioClient.uploadObject(uploadObjectArgs);System.out.println("上传成功!");} catch (Exception e) {System.out.println("上传失败!");}
}
这里用当前日期作为多级目录,使用方式跟上面的testUploadObject
测试方法类似,创建多级目录可以在.object("2023/1/14/pic.jpg")
里写上对应的路径来创建。运行该方法后,可以在控制台上查看是否成功上传到指定的多级目录下:
可以看到文件成功上传到指定的目录下
我们同样可以通过访问 http://192.168.200.128:9000/test-bucket/2023/1/14/pic.jpg 来查看该文件
5. 删除文件
@Test
void testRemoveObject() {try {RemoveObjectArgs removeObjectArgs = RemoveObjectArgs.builder().bucket("test-bucket").object("pic.jpg").build();minioClient.removeObject(removeObjectArgs);System.out.println("删除成功!");} catch (Exception e) {System.out.println("删除失败!");}
}
该方法删除了 MinIO 的test-bucket
下的pic.jpg
文件
可以看到之前上传的pic.jpg
文件已经成功删除
6. 下载文件
@Test
void testDownloadObject() {try {DownloadObjectArgs downloadObjectArgs = DownloadObjectArgs.builder().bucket("test-bucket").object("2023/1/14/pic.jpg").filename("D:\\images\\pic2.jpg").build();minioClient.downloadObject(downloadObjectArgs);System.out.println("下载成功!");} catch (Exception e) {System.out.println("下载失败!");}
}
这个方法将 MinIO 的test-bucket
下的2023/1/14/pic.jpg
文件下载到D:\\images\\pic2.jpg
运行该测试方法后,查看是否成功下载到相应的路径下:
可以看到文件成功从 MinIO 上下载下来了
7. 完整测试代码
package com.lin.project;import io.minio.DownloadObjectArgs;
import io.minio.MinioClient;
import io.minio.RemoveObjectArgs;
import io.minio.UploadObjectArgs;
import org.junit.jupiter.api.Test;/*** @author lin*/
public class MinIOTest {private static final MinioClient minioClient =MinioClient.builder().endpoint("http://192.168.200.128:9000").credentials("minioadmin", "minioadmin").build();@Testvoid testUploadObject() {try {UploadObjectArgs uploadObjectArgs = UploadObjectArgs.builder().bucket("test-bucket").object("pic.jpg").filename("D:\\images\\pic.jpg").build();minioClient.uploadObject(uploadObjectArgs);System.out.println("上传成功!");} catch (Exception e) {System.out.println("上传失败!");}}@Testvoid testUploadObject2() {try {UploadObjectArgs uploadObjectArgs = UploadObjectArgs.builder().bucket("test-bucket").object("2023/1/14/pic.jpg").filename("D:\\images\\pic.jpg").build();minioClient.uploadObject(uploadObjectArgs);System.out.println("上传成功!");} catch (Exception e) {System.out.println("上传失败!");}}@Testvoid testRemoveObject() {try {RemoveObjectArgs removeObjectArgs = RemoveObjectArgs.builder().bucket("test-bucket").object("pic.jpg").build();minioClient.removeObject(removeObjectArgs);System.out.println("删除成功!");} catch (Exception e) {System.out.println("删除失败!");}}@Testvoid testDownloadObject() {try {DownloadObjectArgs downloadObjectArgs = DownloadObjectArgs.builder().bucket("test-bucket").object("2023/1/14/pic.jpg").filename("D:\\images\\pic2.jpg").build();minioClient.downloadObject(downloadObjectArgs);System.out.println("下载成功!");} catch (Exception e) {System.out.println("下载失败!");}}
}
四、参考
- https://min.io/docs/minio/container/index.html
- https://min.io/docs/minio/linux/reference/minio-server/minio-server.html#environment-variables
- https://min.io/docs/minio/container/administration/minio-console.html#static-vs-dynamic-port-assignment
- https://min.io/docs/minio/linux/developers/java/minio-java.html#java-quickstart-guide
- https://min.io/docs/minio/linux/developers/java/API.html#
安装MinIO和使用MinIO Java SDK实现对文件的基本操作相关推荐
- 从Java SDK看DuerOS的技能开发
DuerOS是对话式AI系统,既然都已经是人工智能了,为什么还要在DuerOS上开发技能服务呢? 温故知新,我们还是要重新审视一下AI,具体可以参见<老码农眼中的简明AI>.从编程的角度看 ...
- minio的安装和springboot集成minio
文章目录 1.什么是minio 1.1 minio的优点 1.2 MinIO的基础概念 1.3 纠删码EC (Erasure Code) 1.4 存储形式 1.5 存储方案 2 MinIO环境搭建 2 ...
- centos java yum_CentOS7 使用yum命令安装Java SDK
CentOS 6.X 和 7.X 自带有OpenJDK runtime environment (openjdk).它是一个在linux上实现开源的Java 平台. 安装方式: 1.输入以下命令,以 ...
- Java sdk及tomcat安装设置
在安装好Java SDK后,还需要设置一些系统变量,系统变量的设置可以在系统属性-高级-环境变量中进行 JAVA_HOME=JAVA安装目录 CLASSPATH=- 库路径,可以 ...
- centos 安装java sdk_Linux——CentOS7使用yum命令安装Java SDK
安装jdk有很多种方式比如我们可以在Oracle Technology Network>Java>Java SE>Download(点此链接跳转)下载jdk-8u25-linux-x ...
- Ubuntu下JAVA SDK安装
参考:Ubuntu下JAVA SDK(JDK)的安装并运行第一个小程序 介绍 JAVA是一门write-once, run anywhere 的语言. 我们在这里要安装JDK(JAVA develo ...
- world wind java sdk_World wind Java SDK安装开发测试
worldwind早前发布了开源的java版本的SDK.下载到后的安装测试步骤如下: 1. 下载worldwind java sdk 解压之后,可以获得jogl.jar.gluegen-rt.jar. ...
- java sdk 安装_Java SDK下载安装环境配置+AndroidKiller配置教程
1.先要安装好适合你系统版本的JDK,在这里我使用的是JDK8,161版本: JAVA(JDK)版本:8,V161版本(Java SEDevelopment Kit 8u161),下载地址: 注意:因 ...
- linux安装和简单使用minio client | mc命令
1.安装 地址:https://dl.min.io/client/mc/release/ 这里演示amd64的系统 执行下载命令(个人喜欢将安装资源下载至/opt/local/目录下) wget h ...
最新文章
- 清华学生计划表上热搜,大写的服!
- 建立时间裕量与保持时间裕量的简单理解
- alter table add column多个字段_SQL对表中字段的操作 alter
- python的常用数据类型_python 常用数据类型
- python在租房过程中的应用
- VS2008 vs2010中JQUERY智能提醒
- 为什么我不推荐Python初学者直接看项目源码?工作五年的程序员给的忠告
- google+stackoverflow_解决stackOverflow打开慢的问题
- [转]VB:如何检测到U盘的插拔(源代码)
- 【数据库】使用PLSQL工具时,ORACLE客户端连接串的配置
- Linux系统中设置静态ip地址
- ArcSDE常用操作命令
- [LCS]LCS应用案例--SipSnoop概述。
- 大数据量JSONObject.fromObject性能问题(大数据传给前台)
- 机器学习数据不平衡问题及其解决方法
- python jinja2_Python模块学习 - jinja2
- 【MSSql2000】select
- pci设备身份识别码介绍说明
- 使用Xamarin实现跨平台移动应用开发(转载)
- 一款高仿腾讯漫画的漫画阅读类 APP
热门文章
- 什么是soft matting方法_宜家的娃娃为什么这么”丑“
- 【等保】等保2.0与等保1.0的区别变化看这里!
- 安装w3af时已经安装retire却提示没有安装的问题
- 稳定封装药物磷脂-聚乙二醇-叠氮 DSPE-PEG-Azide,DSPE-PEG-N3
- 滚粗后-高中化学常用方程
- java基于微信小程序旅游管理系统 uniapp 小程序
- bzoj1787.紧急集合(倍增LCA)
- 手绘VS码绘——动态篇(视觉错觉)
- 2022年全球市场印刷电路板和印刷电路板总体规模、主要生产商、主要地区、产品和应用细分研究报告
- div id 与div class 的区别