Windows环境使用SpringBoot整合Minio平替OSS
目录
配置Minio环境
一、下载minio.exe mc.exe
二、设置用户名和密码
用管理员模式打开cmd
三、启动Minio服务器
四、访问WebUI给的地址
SpringBoot整合Minio
一、配置依赖,application.yml
二、代码部分
FileVO
MinioConfig
MinioUploadService
MinioController
三、Postman测试
配置Minio环境
一、下载minio.exe mc.exe
下载地址:https://min.io/download?license=agpl&platform=windows#/windows


记住下面这个图,重要的步骤都在这张图里面
二、设置用户名和密码
用管理员模式打开cmd
然后进入到 minio.exe 所在的目录
再来回顾刚开始的这张图 ,现在来设置用户名和密码
这里的 admin和password可以自定义
setx MINIO_ROOT_USER admin
setx MINIO_ROOT_PASSWORD password
设置完成之后可以在环境变量看见刚刚设置的值
三、启动Minio服务器

现在用命令打开服务器,官网使用powershell,如果你也是用的powershell直接cv下来运行
C:\minio.exe server F:\Data --console-address ":9001"
记得修改路径为自己本地路径
这里我用的是cmd.exe,命令是:
.\minio.exe server D:\WorkSpaces\Minio\data --console-address "127.0.0.1:9000" --address "127.0.0.1:9001"
因为放在代码块里会压缩,这里同时拿出来给各位看一下
.\minio.exe server D:\WorkSpaces\Minio\data --console-address "127.0.0.1:9000" --address "127.0.0.1:9001"
三个色块分别代表的是
①服务器存储的位置 D:\WorkSpaces\Minio\data
②服务端的端口 --console-address "127.0.0.1:9000"
③控制台端口 --address "127.0.0.1:9001"

启动成功之后如上图所示
四、访问WebUI给的地址
http://127.0.0.1:9000

输入WebUI下面给的用户名密码登录


这个Bucket可以理解成是一个仓库,或者说是一个文件夹


自此,Minio的环境就搭建好了
注意:
停止服务在用 Ctrl+C
下次minio启动服务的命令依旧这个

接下来就是将minio与SpringBoot整合
SpringBoot整合Minio
这里我单独创建了一个minio-test项目
一、配置依赖,application.yml
server:port: 8080spring:# 配置文件上传大小限制servlet:multipart:max-file-size: 50MBmax-request-size: 50MBminio:config:access-key: odyssey # 用户账号secret-key: 88888888 # 密码secure: false #如果是true,则用的是https而不是http,默认值是truebucketName: "test2" # 桶的名字 相当于文件夹url: http://127.0.0.1:9001
二、代码部分
FileVO
@Data
public class FileVO {private String url;private String fileName;private Long size;private String extname;
}
MinioConfig
@Data
@Configuration
@ConfigurationProperties(prefix = "minio.config")
public class MinioConfig {/*** 端点*/private String url;/*** 用户名*/private String accessKey;/*** 密码*/private String secretKey;/*** 存储桶名称*/private String bucketName;@Beanpublic MinioClient getMinioClient() {return MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build();}
}
MinioUploadService
@Slf4j
@Service
public class MinioUploadService {// 注入minio配置文件@Autowiredprivate MinioConfig minioConfig;// 注入minio client@Autowiredprivate MinioClient client;public FileVO upload(MultipartFile file) throws ServerException {FileVO fileVO = new FileVO();try {// 获取文件真实名称String originalFilename = file.getOriginalFilename();// 获取文件的扩展名 例如.jpg .docString extname = originalFilename.substring(originalFilename.lastIndexOf("."));// 构建文件上传相关信息PutObjectArgs args = PutObjectArgs.builder().bucket(minioConfig.getBucketName()).object(originalFilename).stream(file.getInputStream(), file.getSize(), -1).contentType(file.getContentType()).build();// 将文件上传到minio服务器client.putObject(args);log.info("文件上传成功");// 组装文件信息,返回前端 或者存入数据路String url = minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + originalFilename;fileVO.setUrl(url);fileVO.setSize(file.getSize());fileVO.setFileName(originalFilename);fileVO.setExtname(extname);} catch (Exception e) {throw new ServerException("文件上传异常" + e.getCause().toString());}return fileVO;}
}
MinioController
@RestController
@RequestMapping("/file")
public class MinioController {@Autowiredprivate MinioUploadService minioUploadService;@PostMapping("/upload")public FileVO upload(@RequestParam("file") MultipartFile file) throws ServerException {FileVO upload = minioUploadService.upload(file);return upload;}
}
代码部分到此结束,记得安装lombok依赖 导入相应的包~
然后启动项目,项目正常

三、Postman测试

文件我自己选择的是一张图片,然后点击Send

测试成功,现在来看看客户端有没有这条 2344开头的jpg文件

可以在图中看出已经在test2中显示了这个文件,至此,教程结束
相关文章:
Windows环境使用SpringBoot整合Minio平替OSS
目录 配置Minio环境 一、下载minio.exe mc.exe 二、设置用户名和密码 用管理员模式打开cmd 三、启动Minio服务器 四、访问WebUI给的地址 SpringBoot整合Minio 一、配置依赖,application.yml 二、代码部分 FileVO MinioConfig MinioUploadService MinioController 三…...
LeetCode 196, 73, 105
目录 196. 删除重复的电子邮箱题目链接表要求知识点思路代码 73. 矩阵置零题目链接标签简单版思路代码 优化版思路代码 105. 从前序与中序遍历序列构造二叉树题目链接标签思路代码 196. 删除重复的电子邮箱 题目链接 196. 删除重复的电子邮箱 表 表Person的字段为id和email…...
在Apache HTTP服务器上配置 TLS加密
安装mod_ssl软件包 [rootlocalhost conf.d]# dnf install mod_ssl -y此时查看监听端口多了一个443端口 自己构造证书 [rootlocalhost conf.d]# cd /etc/pki/tls/certs/ [rootlocalhost certs]# openssl genrsa > jiami.key [rootlocalhost certs]# openssl req -utf8 -n…...
C语言力扣刷题11——打家劫舍1——[线性动态规划]
力扣刷题11——打家劫舍1和2——[线性动态规划] 一、博客声明二、题目描述三、解题思路1、线性动态规划 a、什么是动态规划 2、思路说明 四、解题代码(附注释) 一、博客声明 找工作逃不过刷题,为了更好的督促自己学习以及理解力扣大佬们的解…...
房屋租赁管理小程序的设计
管理员账户功能包括:系统首页,个人中心,用户管理,中介管理,房屋信息管理,房屋类型管理,租房订单管理,租房信息管理 微信端账号功能包括:系统首页,房屋信息&am…...
oracle sql语句 排序 fjd = ‘0101‘ 排在 fjd = ‘0103‘ 的前面
要实现这个排序需求,你可以使用 CASE 表达式来自定义排序逻辑。假设你有一个表格名为 your_table,并且有一个字段 fjd 存储类似 ‘0101’, ‘0103’ 这样的值,你可以这样编写 SQL 查询: SELECT * FROM your_table ORDER BY CASE …...
初试成绩占比百分之70!计算机专硕均分340+!华中师范大学计算机考研考情分析!
华中师范大学(Central China Normal University)简称“华中师大”或“华大”,位于湖北省会武汉,是中华人民共和国教育部直属重点综合性师范大学,国家“211工程”、“985工程优势学科创新平台”重点建设院校,…...
【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十)-git(2)
下面是一些git的常用命令和基本操作,可以当做平常的笔记查询,用于学习!!! 文章目录 前言 一、git 二、git常用命令 总结 前言 下面是一些git的常用命令和基本操作,可以当做平常的笔记查询,用于…...
JMH320【亲测】【御剑九歌】唯美仙侠手游御剑九歌+WIN学习手工端+视频教程+开服清档+运营后台+授权GM物品充值后台
资源介绍: 这也是仙梦奇缘的一个游戏 注意:外网14位IP或域名 ———————————————————————————————————– ps后台介绍: 1区运营后台:http://ip:9981/admin/admintool/ 2区运营后台:http://ip…...
【matlab】信号分解/故障诊断——智能优化算法优化VMD
目录 引言 应用领域 VMD代码实现 智能优化算法优化VMD 引言 VMD(变分模态分解)是一种新的非线性自适应信号分解方法,它通过变分原理将复杂信号分解为若干个具有不同频率中心和带宽的本征模态函数(Intrinsic Mode Functions, …...
【重磅】万能模型-直接能换迪丽热巴的模型
万能模型,顾名思义,不用重新训练src,直接可以用的模型,适应大部分原视频脸 模型用法和正常模型一样,但可以跳过训练阶段!直接到合成阶段使用该模型 本模型没有做Xseg,对遮挡过多的画面不会自动适…...
Web基础和HTTP协议
web基础与HTTP协议: web:就是我们所说的网页。打开网站展示的页面。(全球广域网,万维网) world wide web 分布式图形信息系统 http https 超文本传输协议 分布式:计算机系统或者应用程序分布在多台计算机或者服务器上。通过计算机网络互相通信和协作。共同完成任…...
Mini-L-CTF-2022 minispringboot Thymeleaf模板注入 spel的绕过
Mini-L-CTF-2022 minispringboot Thymeleaf模板注入 spel的绕过 就是一个低版本的Thymeleaf注入 漏洞点 public class MainController {GetMapping({"/{language}"})public String test(PathVariable(name "language") String language, RequestParam(…...
LLM - 神经网络的组成
1. 一个神经元的结构:即接受多个输入X向量,在一个权重向量W和一个偏执标量b的作用下,经过激活函数后,产生一个输出。 2. 一层神经网络的结构:该层网络里的每个神经元并行计算,得到各自的输出;计算方式是输入…...
C++:拷贝构造函数
拷贝构造函数的引入 用对象来初始化对象 (1)简单变量定义时,可以直接初始化,也可以用另一个同类型变量来初始化。举例说明 (2)用class来定义对象时,可以直接初始化,也可以用另一个对象来初始化。举例说明 testperson xiaohong(na…...
云服务出现故障这样处理
无法连接云服务器 服务器远程无法连接时,可通过7ECloud控制台进行连接。 常见故障现象 1、ping不通 2、ping丢包 3、部分端口telnet不通 4、全部端口telnet不通 5、广告、弹窗植入 6、域名无法访问IP访问正常 常见故障原因 1、云服务器过期、关机或者EIP被…...
CVPR2024自动驾驶轨迹预测方向的论文整理
2024年自动驾驶轨迹预测方向的论文汇总 1、Producing and Leveraging Online Map Uncertainty in Trajectory Prediction 论文地址:https://arxiv.org/pdf/2403.16439 提出针对在线地图不确定性带给轨迹预测的影响对应的解决方案。 在轨迹预测中,利用在…...
数据结构——队列练习题
在C语言中,.和->运算符用于访问结构体的成员变量。它们之间的区别在于:.运算符用于访问结构体变量的成员。->运算符用于访问结构体指针变量的成员 1a(rear指向队尾元素后一位,判空判满时牺牲一个存储单元) 首先…...
PLL和CDR的内部结构及其区别
比较PLL和CDR的内部结构及其区别: 基本结构: PLL(相位锁定环): 相位检测器环路滤波器压控振荡器(VCO)分频器(可选,用于频率合成) CDR(时钟数据恢复…...
HarmonyOS APP应用开发项目- MCA助手(Day02持续更新中~)
简言: gitee地址:https://gitee.com/whltaoin_admin/money-controller-app.git端云一体化开发在线文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/agc-harmonyos-clouddev-view-0000001700053733-V5注:…...
Buzz音频转录完全指南:3大核心功能+5个实战场景,快速掌握本地语音转文字技术
Buzz音频转录完全指南:3大核心功能5个实战场景,快速掌握本地语音转文字技术 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Tr…...
告别C盘战士!ArcGIS 10.6安装路径选择与磁盘空间优化全攻略
告别C盘战士!ArcGIS 10.6安装路径选择与磁盘空间优化全攻略当GIS初学者第一次安装ArcGIS 10.6时,往往会被其庞大的安装体积所震惊。许多用户习惯性地点击"下一步",结果发现C盘空间被迅速吞噬,系统运行变得迟缓。本文将深…...
WPF虚拟桌宠组件:可嵌入、高性能、工程化UI生命体
1. 这不是“桌面宠物”,而是一个可嵌入的WPF UI组件化生命体你可能在Windows XP时代见过那只晃着尾巴、偶尔打哈欠的3D小猫,也可能在Win10系统托盘里点开过一个会眨眼的像素狐狸——但那些是独立进程、是系统级小工具、是“看一眼就关掉”的轻量娱乐。而…...
自制极低频电流探头:负电阻补偿原理与低频方波测量实践
1. 项目概述:为极低频电流测量而生在电子测试领域,电流探头是个再常见不过的工具,无论是排查开关电源的纹波,还是分析电机驱动的波形,都离不开它。但如果你尝试用市面上常见的电流探头去观察一个频率低至几赫兹&#x…...
phpMyAdmin CVE-2018-12613:从文件读取到RCE的伪协议利用链
1. 这个漏洞不是“能读文件”那么简单,而是后台权限的彻底失守phpMyAdmin 4.8.1里那个CVE-2018-12613,很多人扫到就报个“存在文件包含”,顺手贴个?targetphp://filter/convert.base64-encode/resource/etc/passwd截图完事。我去年在给一家教…...
保姆级教程:在Ubuntu上配置Frida环境,搞定Android App的IO重定向与签名绕过
在Ubuntu上构建Android逆向工程环境:Frida实战与IO重定向技术解析 对于习惯Linux环境的安全研究人员而言,Windows-centric的逆向工具链往往带来诸多不便。本文将系统性地介绍如何在Ubuntu上搭建完整的Android逆向环境,并深入探讨如何利用Frid…...
别再只用鼠标了!用Leap Motion手势控制Unity游戏,保姆级配置避坑指南(2024版)
2024年Unity手势交互开发实战:Leap Motion从配置到游戏逻辑全解析在游戏开发领域,交互方式的创新往往能带来全新的体验。想象一下,玩家不再需要键盘鼠标,仅凭自然的手部动作就能操控游戏角色——这正是Leap Motion手势识别技术为U…...
php有什么版本,php语言有几个版本
php有什么版本,php语言有几个版本PHP的大版本主要分四支:PHP4/PHP5/PHP6/PHP7 其中,PHP4由于太古老、对OO支持不力已基本被淘汰,请无视PHP4。 PHP6由于基本没有生产线上的应用,还基本只是一款概念产品,很多功能已在PHP…...
Unity塔防底层架构:ScriptableObject驱动的数据契约设计
1. 这不是“又一个塔防模板”,而是塔防开发的底层操作系统我第一次在Asset Store点开Tower Defense Toolkit 4(TDTK-4)的预览图时,下意识划走了——界面太“干净”了,没有炫酷的粒子特效演示,没有满屏飞舞的…...
基于Arduino与433MHz射频的智能灯光定时系统设计与实现
1. 项目概述:告别机械定时器,打造智能灯光管家家里前后院的照明,还有出门度假时屋内的几盏灯,过去一直靠四个老旧的机械定时器来管理。说实话,这玩意儿用起来真是费劲。它的核心问题在于“死板”——你设定好晚上7点开…...
