RuoYi-Vue-Plus 安装Minio 实现文件上传

RuoYi-Vue-Plus安装Minio实现文件上传

背景:若依框架和MinIO实现上传

一、概述

Minio是一款开源的对象存储服务器,它可以运行在多种操作系统上,包括Linux、Windows和MacOS等。它提供了一种简单、可扩展、高可用的对象存储解决方案,支持多种数据格式,包括对象、块和文件等。

以下是Minio的主要特点:

  • 简单易用:Minio安装配置简便,提供Web UI管理存储桶和对象。
  • 可扩展性:支持多节点扩展,提供多种部署模式。
  • 高可用性:确保数据可靠性和可用性,通过冗余备份、复制及故障转移等机制。
  • 安全性:保护数据安全,采用SSL/TLS加密、访问控制及数据加密等措施。
  • 多语言支持:兼容Java、Python等多种编程语言。
  • 社区支持:作为开源项目,拥有活跃的社区和贡献者基础。
  • 对象存储:核心功能为对象存储,支持上传下载任意大小的对象,提供多种API和SDK。
  • 块存储:支持块存储,适用于处理大型文件如图像或视频。
  • 文件存储:支持文件存储,适合处理小型文件,提供简单快速的上传下载方式。

总之,Minio是一款强大、灵活、可扩展的对象存储服务器,适用于各种应用场景,包括云存储、大数据存储和物联网等

二、 安装minio

2.1创建minio文件夹,并进入

mkdir minio

[root@syf mydocker]# mkdir minio
[root@syf mydocker]# cd minio/
[root@syf minio]# ls

2.2 拉取镜像

data  上传文件目录

config 配置文件目录

[root@syf /]# mkdir -p /mydocker/minio/data
[root@syf /]# mkdir -p /mydocker/minio/config

查看拉去的镜像,最新大概400M

[root@syf minio]# docker images
REPOSITORY                                             TAG       IMAGE ID       CREATED         SIZE

minio/minio                                            latest    e31e0721a96b   3 years ago     406MB

2.3启动Minio容器(账号、密码自行设置)

docker run -d \
  --name myMinio \
  -p 9091:9091\
  -p 9092:9092 \
  -v /mydocker/minio/data:/data \
  -v /mydocker/minio/config:/root/.minio \
  -d --restart=always \
  -e MINIO_ROOT_USER=syf\
  -e MINIO_ROOT_PASSWORD=syf133618\
  minio/minio server /data --console-address ":9092" -address ":9091"

上面命令解释: 

  •   -p 9000:9000\   服务器端口
      -p 9092:9092 \ 控制台端口
  • -v /mydocker/minio/data:/data 挂载数据目录
  • -v /mydocker/minio/config:/root/.minio 挂载配置目录
  •   -d --restart=always  开机启动
  • -e MINIO_ROOT_USER=syf 配置登陆用户名
  • -e MINIO_ROOT_PASSWORD=123456 配置登陆密码
  • –console-address “:9092” 服务端口为9092

 dcoker ps 查看容器状态:

[root@syf /]# docker run -d \
>   --name myMinio \
>   -p 9091:9091 \
>   -p 9092:9092 \
>   -v /mydocker/minio/data:/data \
>   -v /mydocker/minio/config:/root/.minio \
>   -e MINIO_ROOT_USER=syf\
>   -e MINIO_ROOT_PASSWORD=syf133618\
>   minio/minio server /data --console-address ":9092"
bcb6a06058d3454a5a9b91e22c53ab457d29698679275b0f005e5c9f5ce75f2e


[root@syf /]# docker ps
CONTAINER ID   IMAGE                          COMMAND                  CREATED          STATUS         PORTS                                                                                                                                                 NAMES
bcb6a06058d3   minio/minio                    "/usr/bin/docker-ent…"   10 seconds ago   Up 9 seconds   9000/tcp, 0.0.0.0:9091-9092->9091-9092/tcp, :::9091-9092->9091-9092/tcp  

启动成功,访问页面: localhost:9092  

账户密码为上面设置的

 注意:上面我们使用9092作为控制台的端口,那么9091就是上传文件的api端口。不要配置错了

否则报错如下:

上传文件失败,请检查配置信息:[S3 API Request made to Console port. S3 Requests should be sent to API port. (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 0; S3 Extended R

三、若依配置

3.1 写上,上面运行时候的用户名秘钥

3.2 测试上传文件

注意:若依会自动创建桶,如果报错请留言我。瑞思拜。。。。。

 

 博主精心整理专栏,请移步主页,CV大法即可用,感谢您小手点一点 手动跪拜:  

1- SpringBoot框架常用配置(若依),代码解读:

2- java常用工具类整理,示例演示:

3- CompletableFuture 异步编排与实际代码展示

4- XXL-JOB 详细学习,手把手带入门

### 已知问题分析 在 `ruoyi-vue-plus` 项目中集成 MinIO 实现文件上传功能时,可能会遇到多种类型的错误。这些错误通常涉及以下几个方面: 1. **MinIO 配置不正确**:包括访问密钥、秘密密钥、存储桶名称等参数设置有误。 2. **网络连接问题**:如果 MinIO 的服务未正常运行或者 Nginx 反向代理配置不当,则可能导致无法成功调用 MinIO API[^3]。 3. **权限不足**:MinIO 存储桶可能设置了严格的权限控制策略,导致客户端无法写入数据。 4. **依赖库版本冲突**:使用的 Java 或其他语言的 MinIO SDK 版本与实际需求不符。 --- ### 解决方案 #### 一、确认 MinIO 配置 确保 MinIO 的基础配置无误,具体如下: - 访问地址应为 `http://<your-minio-domain>:9000` 或通过反向代理后的路径。 - 使用正确的 Access Key 和 Secret Key 登录认证。 - 创建目标存储桶并验证其是否存在以及是否有读写权限。 对于 Windows 用户,在本地测试阶段可以按照以下命令启动 MinIO[^2]: ```bash minio server C:\path\to\storage --console-address ":9001" ``` #### 二、检查 ruoyi-vue-plus 中的相关配置项 进入项目的配置管理模块,定位到 MinIO 的相关字段填写区域。以下是几个重要选项及其说明: - **Endpoint**: 输入 MinIO 对外暴露的服务端点 URL, 如 http://localhost:9000. - **Bucket Name**: 提供用于保存文件的目标 bucket 名称。 - **Access Key & Secret Key**: 填充之前设定好的账户凭证信息。 注意:上述所有值均需严格匹配实际部署环境下的真实情况。 #### 三、排查常见报错原因及处理方法 | 错误描述 | 可能的原因 | 推荐解决方案 | | --- | --- | --- | | HTTP Status Code=403 Forbidden | 权限不够或鉴权失败 | 复核 access/secret key 是否有效;调整对应 Bucket Policy 设置允许 public write 操作 | | Connection refused or timeout | 网络不通畅 / 服务异常终止 | 查看 Docker 日志(`docker logs minio`)判断容器状态是否健康; 如果采用 nginx proxy 则同步检验 upstream 地址准确性| | NoSuchBucketException | 尝试操作不存在的 bucket | 手动创建指定名字的空间后再重试 | #### 四、代码片段示例 (Java 后端部分) 假设前端已传递过来待存档的数据流至后台接口处,下面给出一段基于官方推荐方式实现文件持久化的样例程序: ```java import io.minio.MinioClient; // ... other imports... public void uploadFile(String fileName, InputStream fileStream){ try { MinioClient client = new MinioClient( "https://play.min.io", // 替换成自己的 endpoint "Q3AM3UQ867SPQQA43P2F","zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"); boolean found = client.bucketExists(BucketExistsArgs.builder().bucket("my-bucket").build()); if(!found){ client.makeBucket(MakeBucketArgs.builder().bucket("my-bucket").build()); } PutObjectArgs args =PutObjectArgs.builder() .bucket("my-bucket") .object(fileName) .stream(fileStream,fileStream.available(),-1).contentType("application/octet-stream").build(); client.putObject(args); } catch(Exception e){ System.out.println(e.getMessage()); } } ``` 以上脚本展示了如何利用 MinIO Client Library 构建对象存储请求流程. --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

syfjava

请博主喝杯蜜雪冰城

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值