程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 若依框架
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 若依框架
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 快速入门

  • 后端手册

  • 前端手册

  • 组件文档

  • 数据库分析

  • 集成插件

    • 集成 Docker 实现一键部署
    • 升级 Spring Boot 到 3.x 版本
    • 集成 Ehcache 实现本地缓存切换
    • 集成 WebSocket 实现实时通信
    • 集成 Electron 实现桌面应用程序
    • 集成 Atomikos 实现分布式事务
    • 集成 MinIO 实现分布式文件存储
      • 1. 添加 MinIO 依赖
      • 2. 配置 MinIO 连接信息
      • 3. 实现 MinIO 文件上传功能
      • 4. 下载并集成插件
      • 5. 修改文件上传路径并验证
    • 集成 Easy-ES 实现分布式全文检索
    • 使用 `localStorage` 代替 `cookie`
    • 使用 Undertow 替代 Tomcat 容器
    • 集成 Actuator 实现优雅关闭应用
    • 集成 AJ-Captcha 实现滑块验证码
    • 集成 Sharding-JDBC 实现分库分表
    • 集成 JustAuth 实现第三方授权登录
    • 集成 `watermark-dom` 实现页面水印
    • 集成 MyBatis-Plus 实现 MyBatis 增强
    • 集成 EasyExcel 实现 Excel 表格增强
    • 集成 Knife4j 实现 Swagger 文档增强
    • 集成 Redisson 实现 Redis 分布式锁
    • 集成 IP2Region 实现离线 IP 地址定位
    • 42集成 JSEncrypt 实现密码加密传输
    • 集成 HttpClient 实现 HTTP 接口增强
    • 集成 Druid 实现数据库密码加密功能
    • 集成 Browscap 实现用户代理解析
    • 集成 Dynamic-DataSource 实现多数据源增强
  • 若依框架
  • 集成插件
scholar
2024-08-31
目录

集成 MinIO 实现分布式文件存储

# 集成 MinIO 实现分布式文件存储的详细步骤

在现代应用中,文件存储是非常关键的部分。MinIO 是一个高性能的对象存储系统,支持分布式部署,能够很好地满足大规模文件存储需求。下面是如何在 RuoYi 项目中集成 MinIO 实现分布式文件存储的详细步骤。


# 1. 添加 MinIO 依赖

首先,在 ruoyi-common/pom.xml 文件中添加 MinIO 的依赖,以便项目可以使用 MinIO 的 API 进行文件操作。

<!-- MinIO 文件存储 -->
<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.2.1</version>
</dependency>
1
2
3
4
5
6

这将引入 MinIO 的核心库,支持与 MinIO 服务器的交互。


# 2. 配置 MinIO 连接信息

在 ruoyi-admin 模块的 application.yml 文件中,添加 MinIO 的配置项,包括 MinIO 服务器地址、访问密钥等信息。

# Minio配置
minio:
  url: http://localhost:9000        # MinIO服务器的URL
  accessKey: minioadmin             # MinIO访问的accessKey
  secretKey: minioadmin             # MinIO访问的secretKey
  bucketName: ruoyi                 # 默认存储桶的名称
1
2
3
4
5
6
  • url:MinIO 服务器的访问地址。
  • accessKey 和 secretKey:MinIO 的访问凭证。
  • bucketName:默认使用的存储桶名称。

# 3. 实现 MinIO 文件上传功能

在 CommonController.java 中,自定义一个 MinIO 服务器的上传请求方法。该方法将接收上传的文件并存储到 MinIO 服务器。

/**
 * 自定义 Minio 服务器上传请求
 */
@PostMapping("/uploadMinio")
public AjaxResult uploadFileMinio(MultipartFile file) throws Exception {
    try {
        // 上传并返回新文件名称
        String fileName = FileUploadUtils.uploadMinio(file);
        AjaxResult ajax = AjaxResult.success();
        ajax.put("url", fileName); // 文件访问 URL
        ajax.put("fileName", fileName); // 新文件名
        ajax.put("newFileName", FileUtils.getName(fileName)); // 文件名
        ajax.put("originalFilename", file.getOriginalFilename()); // 原文件名
        return ajax;
    } catch (Exception e) {
        return AjaxResult.error(e.getMessage());
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  • uploadFileMinio:该方法将文件上传到 MinIO 服务器,并返回文件的相关信息。
  • FileUploadUtils.uploadMinio:实际执行上传操作的方法(见后续步骤)。

# 4. 下载并集成插件

下载包含 MinIO 文件存储支持的插件包,并将相关代码集成到 RuoYi 项目中。具体步骤如下:

  1. 下载插件相关包:你可以通过提供的链接下载插件包并解压。
  2. 覆盖工程代码:将下载的插件包中的代码文件,覆盖到项目的相应目录中。

插件相关包和代码实现:下载链接 (opens new window) 提取码: mjs7


# 5. 修改文件上传路径并验证

为了验证 MinIO 文件存储功能,您可以将项目中使用的文件上传方法和路径修改为使用 MinIO。

  • 修改代码上传逻辑:在 FileUploadUtils.upload 方法中调用 uploadMinio,以便使用 MinIO 进行文件存储。
public static String uploadMinio(MultipartFile file) throws Exception {
    // 实现文件上传到 MinIO 的逻辑
}
1
2
3
  • 页面测试:修改前端组件的文件上传路径,将上传路径 common/upload 修改为 common/uploadMinio。同时,去掉多余的代理路径 baseUrl,然后上传文件进行测试。

结论

通过以上步骤,您可以在 RuoYi 项目中成功集成 MinIO,实现分布式文件存储。MinIO 作为一个高性能的对象存储系统,能够很好地支持大规模文件管理,并且与 RuoYi 的集成非常顺畅。通过这些集成,你可以实现文件的分布式存储,并能够方便地进行扩展和管理。

编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
集成 Atomikos 实现分布式事务
集成 Easy-ES 实现分布式全文检索

← 集成 Atomikos 实现分布式事务 集成 Easy-ES 实现分布式全文检索→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式