diff --git a/环境/安装教程/Docker 2375端口开启外网访问.md b/环境/安装教程/Docker 2375端口开启外网访问.md
index 7727419..3d4a2c9 100644
--- a/环境/安装教程/Docker 2375端口开启外网访问.md
+++ b/环境/安装教程/Docker 2375端口开启外网访问.md
@@ -19,7 +19,18 @@ esc :wq保存退出
然后重启docker服务
```shell
-sudo systemctl daemon-reload
-sudo systemctl restart docker.service
+systemctl daemon-reload && systemctl restart docker
```
+然后直接在命令行客户端输入如下命令,IP地址改为自己的
+
+
+```
+curl http://IP地址:2375/version
+```
+
+或者在浏览器直接访问,IP地址改为自己的
+
+```
+http://IP地址:2375/version
+```
diff --git a/环境/安装教程/Docker开放2375端口.md b/环境/安装教程/Docker开放2375端口.md
deleted file mode 100644
index 136e5d5..0000000
--- a/环境/安装教程/Docker开放2375端口.md
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-开启端口命令 (--permanent永久生效,没有此参数重启后失效)
-
-```
-firewall-cmd --zone=public --add-port=2375/tcp --permanent
-```
-
-重新载入
-
-```
-firewall-cmd --reload
-```
-
-使用 vim 编辑docker服务配置文件
-
-```
-vim /lib/systemd/system/docker.service
-```
-
-找到如下配置行
-
-```
-ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
-```
-
-将其注释掉或者直接删除,替换成下面的配置行.然后保存退出
-
-```
-ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
-```
-
-重新加载docker配置并重启服务
-
-```
-systemctl daemon-reload && systemctl restart docker
-```
-
-然后直接在命令行客户端输入如下命令,IP地址改为自己的
-
-
-```
-curl http://IP地址:2375/version
-```
-
-或者在浏览器直接访问,IP地址改为自己的
-
-```
-http://IP地址:2375/version
-```
-
-
-```xml
-{
- "insecure-registries": [
- "10.211.55.2:8082"
- ],
- "registry-mirrors": [
- "10.211.55.2:8082"
- ]
-}
-```
\ No newline at end of file
diff --git a/环境/Docker-Compose/Docker compose 安装Gitea.md b/环境/安装教程/Gitea.md
similarity index 100%
rename from 环境/Docker-Compose/Docker compose 安装Gitea.md
rename to 环境/安装教程/Gitea.md
diff --git a/环境/安装教程/Minio.md b/环境/安装教程/Minio.md
index 855186b..6174216 100644
--- a/环境/安装教程/Minio.md
+++ b/环境/安装教程/Minio.md
@@ -1,4 +1,97 @@
-```shell
+## MinIO是什么?
+
+![](https://lsky.hhdxw.top/imghub/2024/01/image-202401101704861743.png)
+
+官方解释:MinIO 是一个基于Apache License v2.0开源协议的[对象存储](https://cloud.tencent.com/product/cos?from_column=20065&from=20065)服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
+
+MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。
+
+## MinIO有哪些优势
+
+### 1. 开发文档全面
+
+MinIO作为一款基于Golang 编程语言开发的一款高性能的分布式式存储方案的开源项目,有十分完善的官方文档。。
+
+官网文档地址:https://docs.min.io/cn/
+
+### 2.高性能
+
+MinIO号称是目前速度最快的对象存储服务器。在标准硬件上,对象存储的读/写速度最高可以高达183 GB/s和171 GB/s。对象存储可以作为主存储层,用来处理Spark、Presto、TensorFlow、H2O.ai等各种复杂工作负载以及成为Hadoop HDFS的替代品。
+
+MinIO用作云原生应用程序的主要存储,和传统对象存储相比,云原生应用程序需要更高的吞吐量和更低的延迟。而这些都是MinIO能够达成的性能指标。
+
+### 3.容器化集成方便
+
+MinIO提供了与k8s、etcd、docker等主流容器化技术深度集成方案。
+
+## 安装MinIo服务
+
+想要安装Minio有两种方案,第一种是直接在服务器上安装,还有一种是使用Docker快速部署。
+
+官方文档:https://www.minio.org.cn/docs/cn/minio
+
+### 直接安装
+
+安装包下载页面:https://dl.min.io/server/minio/release/,我们需要选择好对应架构和系统的安装包,比如Ubuntu/Debian系统下,我们可以像这样安装:
+
+```sh
+wget https://dl.min.io/server/minio/release/linux-amd64/minio_20230831153116.0.0_amd64.deb -O minio.deb
+sudo dpkg -i minio.deb
+```
+
+在CentOS/Redhat(RHEL)系统下,可以像这样安装:
+
+```sh
+wget https://dl.min.io/server/minio/release/linux-amd64/minio-20230831153116.0.0.x86_64.rpm -O minio.rpm
+sudo dnf install minio.rpm
+```
+
+安装完成后,我们需要创建一个用于存放minio文件数据的目录:
+
+```sh
+sudo mkdir /mnt/minio
+```
+
+然后创建一个minio使用的用户,并为此用户分配对应目录的访问权限:
+
+```sh
+groupadd -r minio-user
+useradd -M -r -g minio-user minio-user
+chown minio-user:minio-user /mnt/minio
+```
+
+接着我们需要创建Minio的配置文件:
+
+```sh
+sudo vim /etc/default/minio
+```
+
+编写以下内容到配置文件中:
+
+```properties
+#系统管理员账号和密码
+MINIO_ROOT_USER=minio
+MINIO_ROOT_PASSWORD=password
+#设置用于存储数据的目录
+MINIO_VOLUMES="/mnt/minio"
+#项目接口访问地址
+MINIO_SERVER_URL="http://0.0.0.0:9000"
+#配置其他选项,比如后台管理系统的地址
+MINIO_OPTS="--console-address 0.0.0.0:9090"
+```
+
+配置完成之后就可以启动Minio服务了:
+
+```sh
+sudo systemctl enable minio.service
+sudo systemctl start minio.service
+```
+
+### 使用Docker安装
+
+对于各位小伙伴本地开发测试,这里更推荐使用Docker镜像安装,非常简单快捷,本地安装好Docker客户端之后,只需要执行以下命令就能快速部署:
+
+```sh
docker run -p 9000:9000 -p 9090:9090 --name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=minio" \
@@ -6,4 +99,111 @@ docker run -p 9000:9000 -p 9090:9090 --name minio \
-v database:/data \
minio/minio server \
/data --console-address ":9090" -address ":9000"
+```
+
+非常方便快捷。
+
+------
+
+## 使用Java操作对象存储
+
+前面我们搭建好了对象存储服务,接着就可以开始愉快地使用了。
+
+### 基本使用
+
+Minio已经为我们提供了封装好的依赖,我们只需要直接使用即可:
+
+```xml
+
+ io.minio
+ minio
+ 8.3.9
+
+```
+
+接着我们需要创建一个Minio客户端用于访问对象存储服务器:
+
+```java
+MinioClient client = MinioClient.builder()
+ .endpoint("http://localhost:9000") //对象存储服务地址,注意是9000那个端口
+ .credentials("minio", "password") //账户直接使用管理员
+ .build();
+```
+
+对于Java的相关操作,可以说非常全面,包含对桶的操作、对象操作等等,文档地址:https://www.minio.org.cn/docs/cn/minio/linux/developers/java/API.html,这里我们先演示一下文件上传:
+
+```java
+//首先找到我们需要上传的文件
+File file = new File("/Users/nagocoler/Downloads/test.jpg");
+//构造一个输入流用于文件传输
+FileInputStream stream = new FileInputStream(file);
+//填写上传的相关参数,使用PutObjectArgs的Builder来完成
+PutObjectArgs put = PutObjectArgs.builder()
+ .bucket("test") //设置需要上传的桶名称
+ .object("666.jpg") //设置上传后保存的文件名称
+ .stream(stream, file.length(), -1) //配置流以及大小还有分片大小
+ .build();
+client.putObject(put); //使用putObject方法完成上传操作
+```
+
+这样就可以将文件上传到对象存储服务器中了。
+
+接着是下载文件:
+
+```java
+//填写下载相关的参数,使用GetObjectArgs来完成
+GetObjectArgs get = GetObjectArgs.builder()
+ .bucket("test") //设置需要下载的桶名称
+ .object("666.jpg") //设置下载后保存的文件名称
+ .build();
+GetObjectResponse response = client.getObject(get);
+//使用输出流保存下载的文件到本地
+FileOutputStream stream = new FileOutputStream("/Users/nagocoler/Downloads/download.png");
+stream.write(response.readAllBytes());
+stream.close();
+```
+
+最后是删除桶里的文件:
+
+```java
+RemoveObjectArgs remove = RemoveObjectArgs.builder()
+ .bucket("test") //设置需要删除文件的桶名称
+ .object("666.jpg") //设置删除的文件名称
+ .build();
+client.removeObject(remove); //删就完事
+```
+
+### 服务器文件上传和下载
+
+实例代码:
+
+```java
+@RestController
+@RequestMapping("/")
+public class FileController {
+
+ @Resource
+ MinioClient client;
+
+ @PostMapping("upload")
+ public String upload(@RequestParam("file") MultipartFile file) throws Exception {
+ InputStream stream = file.getInputStream();
+ String name = UUID.randomUUID().toString();
+ PutObjectArgs args = PutObjectArgs.builder()
+ .bucket("test")
+ .object("upload/"+name)
+ .stream(stream, file.getSize(), -1)
+ .build();
+ client.putObject(args);
+ return name;
+ }
+
+ @GetMapping("file/{name}")
+ public void file(@PathVariable("name") String name,
+ HttpServletResponse response) throws Exception{
+ GetObjectResponse object = client.getObject(GetObjectArgs.builder().bucket("test").object("upload/"+name).build());
+ ServletOutputStream stream = response.getOutputStream();
+ stream.write(object.readAllBytes());
+ }
+}
```
\ No newline at end of file
diff --git a/环境/Docker-Compose/Docker-Compose 安装 Nginx Proxy Manager.md b/环境/安装教程/Nginx Proxy Manager.md
similarity index 100%
rename from 环境/Docker-Compose/Docker-Compose 安装 Nginx Proxy Manager.md
rename to 环境/安装教程/Nginx Proxy Manager.md
diff --git a/环境/安装教程/YuFei.83721.@.md b/环境/安装教程/YuFei.83721.@.md
deleted file mode 100644
index dd79d09..0000000
--- a/环境/安装教程/YuFei.83721.@.md
+++ /dev/null
@@ -1 +0,0 @@
-yufei83721@gmail.com
\ No newline at end of file
diff --git a/环境/安装教程/graylog skywalking.md b/环境/安装教程/graylog skywalking.md
new file mode 100644
index 0000000..e86a0e4
--- /dev/null
+++ b/环境/安装教程/graylog skywalking.md
@@ -0,0 +1,231 @@
+整合 elasticsearch mongodb graylog skywalking-oap skywalking -ui
+
+```yaml
+version: "3"
+services:
+ elasticsearch:
+ image: elasticsearch:7.17.5
+ container_name: elasticsearch
+ ports:
+ - "9200:9200"
+ - "9300:9300"
+ healthcheck:
+ test: ["CMD-SHELL", "curl -sf http://localhost:9200/_cluster/health || exit 1"] #⼼跳检测,成功之后不再执⾏后⾯的退出
+ interval: 60s #⼼跳检测间隔周期
+ timeout: 10s
+ retries: 3
+ start_period: 60s #⾸次检测延迟时间
+ environment:
+ discovery.type: single-node #单节点模式
+ ingest.geoip.downloader.enabled: "false"
+ bootstrap.memory_lock: "true"
+ ES_JAVA_OPTS: "-Xms512m -Xmx512m"
+ TZ: "Asia/Shanghai"
+ xpack.security.enabled: "false" #单机模式
+ ulimits:
+ memlock:
+ soft: -1
+ hard: -1
+ mongodb:
+ image: mongo:4.4
+ container_name: mongodb
+ restart: always
+ ports:
+ - "27017:27017"
+ environment:
+ - MONGO_INITDB_ROOT_USERNAME=xlcs
+ - MONGO_INITDB_ROOT_PASSWORD=123321
+ graylog:
+ image: graylog/graylog:4.3
+ container_name: graylog
+ ports:
+ - "9000:9000"
+ - "12201:12201/udp"
+ environment:
+ - GRAYLOG_HTTP_EXTERNAL_URI=http://10.211.55.50:9000/
+ - GRAYLOG_ELASTICSEARCH_HOSTS=http://10.211.55.50:9200/
+ - GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai
+ - GRAYLOG_WEB_ENDPOINT_URI=http://10.211.55.50:9000/api
+ - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
+ - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
+ - GRAYLOG_MONGODB_URI=mongodb://xlcs:123321@10.211.55.50:27017/admin
+ depends_on:
+ - elasticsearch
+ - mongodb
+ links:
+ - elasticsearch
+ - mongodb
+
+ skywalking-oap:
+ image: apache/skywalking-oap-server:9.3.0
+ container_name: skywalking-oap
+ depends_on:
+ elasticsearch:
+ condition: service_healthy
+ links:
+ - elasticsearch
+ environment:
+ SW_HEALTH_CHECKER: default
+ SW_STORAGE: elasticsearch
+ SW_STORAGE_ES_CLUSTER_NODES: 10.211.55.50:9200
+ JAVA_OPTS: "-Xms2048m -Xmx2048m"
+ TZ: Asia/Shanghai
+ SW_TELEMETRY: prometheus
+ healthcheck:
+ test: ["CMD-SHELL", "/skywalking/bin/swctl ch"]
+ interval: 30s
+ timeout: 10s
+ retries: 3
+ start_period: 10s
+ restart: on-failure
+ ports:
+ - "11800:11800"
+ - "12800:12800"
+
+ skywalking-ui:
+ image: apache/skywalking-ui:9.3.0
+ container_name: skywalking-ui
+ depends_on:
+ skywalking-oap:
+ condition: service_healthy
+ links:
+ - skywalking-oap
+ ports:
+ - "8080:8080"
+ environment:
+ SW_OAP_ADDRESS: http://10.211.55.50:12800
+ SW_HEALTH_CHECKER: default
+ TZ: Asia/Shanghai
+ healthcheck:
+ test: ["CMD-SHELL", "curl -sf http://localhost:8080 || exit 1"] #⼼跳检测,成功之后不再执⾏后⾯的退出
+ interval: 60s #⼼跳检测间隔周期
+ timeout: 10s
+ retries: 3
+ start_period: 60s #⾸次检测延迟时间
+```
+
+
+
+```yaml
+version: "3"
+services:
+ elasticsearch:
+ image: elasticsearch:7.17.5
+ container_name: elasticsearch
+ ports:
+ - "9200:9200"
+ - "9300:9300"
+ healthcheck:
+ test: ["CMD-SHELL", "curl -sf http://localhost:9200/_cluster/health || exit 1"] #⼼跳检测,成功之后不再执⾏后⾯的退出
+ interval: 60s #⼼跳检测间隔周期
+ timeout: 10s
+ retries: 3
+ start_period: 60s #⾸次检测延迟时间
+ volumes:
+ - es-data:/usr/share/elasticsearch/data
+ - es-plugins:/usr/share/elasticsearch/plugins
+ environment:
+ discovery.type: single-node #单节点模式
+ ingest.geoip.downloader.enabled: "false"
+ bootstrap.memory_lock: "true"
+ ES_JAVA_OPTS: "-Xms512m -Xmx512m"
+ TZ: "Asia/Shanghai"
+ xpack.security.enabled: "false" #单机模式
+ privileged: true
+ ulimits:
+ memlock:
+ soft: -1
+ hard: -1
+ mongodb:
+ image: mongo:4.4
+ container_name: mongodb
+ restart: always
+ ports:
+ - "27017:27017"
+ volumes:
+ - mongodb:/data/db
+ environment:
+ - MONGO_INITDB_ROOT_USERNAME=xlcs
+ - MONGO_INITDB_ROOT_PASSWORD=123321
+
+ graylog:
+ image: graylog/graylog:4.3
+ container_name: graylog
+ ports:
+ - "9000:9000"
+ - "12201:12201/udp"
+ environment:
+ - GRAYLOG_HTTP_EXTERNAL_URI=http://10.211.55.50:9000/
+ - GRAYLOG_ELASTICSEARCH_HOSTS=http://10.211.55.50:9200/
+ - GRAYLOG_ROOT_TIMEZONE=Asia/Shanghai
+ - GRAYLOG_WEB_ENDPOINT_URI=http://10.211.55.50:9000/api
+ - GRAYLOG_PASSWORD_SECRET=somepasswordpepper
+ - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
+ - GRAYLOG_MONGODB_URI=mongodb://xlcs:123321@10.211.55.50:27017/admin
+ depends_on:
+ - elasticsearch
+ - mongodb
+ links:
+ - elasticsearch
+ - mongodb
+
+ skywalking-oap:
+ image: apache/skywalking-oap-server:9.3.0
+ container_name: skywalking-oap
+ depends_on:
+ elasticsearch:
+ condition: service_healthy
+ links:
+ - elasticsearch
+ environment:
+ SW_HEALTH_CHECKER: default
+ SW_STORAGE: elasticsearch
+ SW_STORAGE_ES_CLUSTER_NODES: 10.211.55.50:9200
+ JAVA_OPTS: "-Xms2048m -Xmx2048m"
+ TZ: Asia/Shanghai
+ SW_TELEMETRY: prometheus
+ healthcheck:
+ test: ["CMD-SHELL", "/skywalking/bin/swctl ch"]
+ interval: 30s
+ timeout: 10s
+ retries: 3
+ start_period: 10s
+ restart: on-failure
+ ports:
+ - "11800:11800"
+ - "12800:12800"
+
+ skywalking-ui:
+ image: apache/skywalking-ui:9.3.0
+ container_name: skywalking-ui
+ depends_on:
+ skywalking-oap:
+ condition: service_healthy
+ links:
+ - skywalking-oap
+ ports:
+ - "8080:8080"
+ environment:
+ SW_OAP_ADDRESS: http://10.211.55.50:12800
+ SW_HEALTH_CHECKER: default
+ TZ: Asia/Shanghai
+ healthcheck:
+ test: ["CMD-SHELL", "curl -sf http://localhost:8080 || exit 1"] #⼼跳检测,成功之后不再执⾏后⾯的退出
+ interval: 60s #⼼跳检测间隔周期
+ timeout: 10s
+ retries: 3
+ start_period: 60s #⾸次检测延迟时间
+
+ kibana:
+ image: kibana:7.17.5
+ container_name: kibana
+ ports:
+ - "5601:5601"
+ links:
+ - elasticsearch:elasticsearch
+volumes:
+ es-data:
+ es-plugins:
+ mongodb:
+```
+
diff --git a/环境/安装教程/安装Minio服务.md b/环境/安装教程/安装Minio服务.md
deleted file mode 100644
index 6174216..0000000
--- a/环境/安装教程/安装Minio服务.md
+++ /dev/null
@@ -1,209 +0,0 @@
-## MinIO是什么?
-
-![](https://lsky.hhdxw.top/imghub/2024/01/image-202401101704861743.png)
-
-官方解释:MinIO 是一个基于Apache License v2.0开源协议的[对象存储](https://cloud.tencent.com/product/cos?from_column=20065&from=20065)服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
-
-MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。
-
-## MinIO有哪些优势
-
-### 1. 开发文档全面
-
-MinIO作为一款基于Golang 编程语言开发的一款高性能的分布式式存储方案的开源项目,有十分完善的官方文档。。
-
-官网文档地址:https://docs.min.io/cn/
-
-### 2.高性能
-
-MinIO号称是目前速度最快的对象存储服务器。在标准硬件上,对象存储的读/写速度最高可以高达183 GB/s和171 GB/s。对象存储可以作为主存储层,用来处理Spark、Presto、TensorFlow、H2O.ai等各种复杂工作负载以及成为Hadoop HDFS的替代品。
-
-MinIO用作云原生应用程序的主要存储,和传统对象存储相比,云原生应用程序需要更高的吞吐量和更低的延迟。而这些都是MinIO能够达成的性能指标。
-
-### 3.容器化集成方便
-
-MinIO提供了与k8s、etcd、docker等主流容器化技术深度集成方案。
-
-## 安装MinIo服务
-
-想要安装Minio有两种方案,第一种是直接在服务器上安装,还有一种是使用Docker快速部署。
-
-官方文档:https://www.minio.org.cn/docs/cn/minio
-
-### 直接安装
-
-安装包下载页面:https://dl.min.io/server/minio/release/,我们需要选择好对应架构和系统的安装包,比如Ubuntu/Debian系统下,我们可以像这样安装:
-
-```sh
-wget https://dl.min.io/server/minio/release/linux-amd64/minio_20230831153116.0.0_amd64.deb -O minio.deb
-sudo dpkg -i minio.deb
-```
-
-在CentOS/Redhat(RHEL)系统下,可以像这样安装:
-
-```sh
-wget https://dl.min.io/server/minio/release/linux-amd64/minio-20230831153116.0.0.x86_64.rpm -O minio.rpm
-sudo dnf install minio.rpm
-```
-
-安装完成后,我们需要创建一个用于存放minio文件数据的目录:
-
-```sh
-sudo mkdir /mnt/minio
-```
-
-然后创建一个minio使用的用户,并为此用户分配对应目录的访问权限:
-
-```sh
-groupadd -r minio-user
-useradd -M -r -g minio-user minio-user
-chown minio-user:minio-user /mnt/minio
-```
-
-接着我们需要创建Minio的配置文件:
-
-```sh
-sudo vim /etc/default/minio
-```
-
-编写以下内容到配置文件中:
-
-```properties
-#系统管理员账号和密码
-MINIO_ROOT_USER=minio
-MINIO_ROOT_PASSWORD=password
-#设置用于存储数据的目录
-MINIO_VOLUMES="/mnt/minio"
-#项目接口访问地址
-MINIO_SERVER_URL="http://0.0.0.0:9000"
-#配置其他选项,比如后台管理系统的地址
-MINIO_OPTS="--console-address 0.0.0.0:9090"
-```
-
-配置完成之后就可以启动Minio服务了:
-
-```sh
-sudo systemctl enable minio.service
-sudo systemctl start minio.service
-```
-
-### 使用Docker安装
-
-对于各位小伙伴本地开发测试,这里更推荐使用Docker镜像安装,非常简单快捷,本地安装好Docker客户端之后,只需要执行以下命令就能快速部署:
-
-```sh
-docker run -p 9000:9000 -p 9090:9090 --name minio \
- -d --restart=always \
- -e "MINIO_ACCESS_KEY=minio" \
- -e "MINIO_SECRET_KEY=password" \
- -v database:/data \
- minio/minio server \
- /data --console-address ":9090" -address ":9000"
-```
-
-非常方便快捷。
-
-------
-
-## 使用Java操作对象存储
-
-前面我们搭建好了对象存储服务,接着就可以开始愉快地使用了。
-
-### 基本使用
-
-Minio已经为我们提供了封装好的依赖,我们只需要直接使用即可:
-
-```xml
-
- io.minio
- minio
- 8.3.9
-
-```
-
-接着我们需要创建一个Minio客户端用于访问对象存储服务器:
-
-```java
-MinioClient client = MinioClient.builder()
- .endpoint("http://localhost:9000") //对象存储服务地址,注意是9000那个端口
- .credentials("minio", "password") //账户直接使用管理员
- .build();
-```
-
-对于Java的相关操作,可以说非常全面,包含对桶的操作、对象操作等等,文档地址:https://www.minio.org.cn/docs/cn/minio/linux/developers/java/API.html,这里我们先演示一下文件上传:
-
-```java
-//首先找到我们需要上传的文件
-File file = new File("/Users/nagocoler/Downloads/test.jpg");
-//构造一个输入流用于文件传输
-FileInputStream stream = new FileInputStream(file);
-//填写上传的相关参数,使用PutObjectArgs的Builder来完成
-PutObjectArgs put = PutObjectArgs.builder()
- .bucket("test") //设置需要上传的桶名称
- .object("666.jpg") //设置上传后保存的文件名称
- .stream(stream, file.length(), -1) //配置流以及大小还有分片大小
- .build();
-client.putObject(put); //使用putObject方法完成上传操作
-```
-
-这样就可以将文件上传到对象存储服务器中了。
-
-接着是下载文件:
-
-```java
-//填写下载相关的参数,使用GetObjectArgs来完成
-GetObjectArgs get = GetObjectArgs.builder()
- .bucket("test") //设置需要下载的桶名称
- .object("666.jpg") //设置下载后保存的文件名称
- .build();
-GetObjectResponse response = client.getObject(get);
-//使用输出流保存下载的文件到本地
-FileOutputStream stream = new FileOutputStream("/Users/nagocoler/Downloads/download.png");
-stream.write(response.readAllBytes());
-stream.close();
-```
-
-最后是删除桶里的文件:
-
-```java
-RemoveObjectArgs remove = RemoveObjectArgs.builder()
- .bucket("test") //设置需要删除文件的桶名称
- .object("666.jpg") //设置删除的文件名称
- .build();
-client.removeObject(remove); //删就完事
-```
-
-### 服务器文件上传和下载
-
-实例代码:
-
-```java
-@RestController
-@RequestMapping("/")
-public class FileController {
-
- @Resource
- MinioClient client;
-
- @PostMapping("upload")
- public String upload(@RequestParam("file") MultipartFile file) throws Exception {
- InputStream stream = file.getInputStream();
- String name = UUID.randomUUID().toString();
- PutObjectArgs args = PutObjectArgs.builder()
- .bucket("test")
- .object("upload/"+name)
- .stream(stream, file.getSize(), -1)
- .build();
- client.putObject(args);
- return name;
- }
-
- @GetMapping("file/{name}")
- public void file(@PathVariable("name") String name,
- HttpServletResponse response) throws Exception{
- GetObjectResponse object = client.getObject(GetObjectArgs.builder().bucket("test").object("upload/"+name).build());
- ServletOutputStream stream = response.getOutputStream();
- stream.write(object.readAllBytes());
- }
-}
-```
\ No newline at end of file