当前位置: 首页 > news >正文

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 所在的目录


再来回顾刚开始的这张图 ,现在来设置用户名和密码

这里的 adminpassword可以自定义

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中显示了这个文件,至此,教程结束

相关文章:

  • 点击notify里面的通知,实现路由跳转
  • 学习Symfony框架
  • react框架,使用vite和nextjs构建react项目
  • datawhale大模型应用开发夏令营学习笔记一
  • 下拉选择输入框(基于elment-ui)
  • 【JavaEE】多线程代码案例(2)
  • 8.ApplicationContext常见实现
  • 【计算机网络仿真】b站湖科大教书匠思科Packet Tracer——实验15 网络故障导致的路由环路问题
  • CPU通过网络将IP camera的RTSP流(H.264编码或是H.265编码)拉回, 交给GPU解码并显示的处理流程
  • 浅聊权限系统设计模型
  • vite+vue3+nginx配置统一公共前缀
  • 尚硅谷k8s 2
  • 航空数据管控系统-②项目分析与设计:任务1:需求分析-项目场景引入
  • HarmonyOS APP应用开发项目- MCA助手(Day02持续更新中~)
  • React@16.x(48)路由v5.x(13)源码(5)- 实现 Switch
  • CSS相对定位
  • Fastjson的基本使用方法大全
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • Laravel Telescope:优雅的应用调试工具
  • leetcode386. Lexicographical Numbers
  • miaov-React 最佳入门
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • spring boot 整合mybatis 无法输出sql的问题
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 利用jquery编写加法运算验证码
  • 马上搞懂 GeoJSON
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 使用putty远程连接linux
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 突破自己的技术思维
  • 函数计算新功能-----支持C#函数
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (1)常见O(n^2)排序算法解析
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (7)STL算法之交换赋值
  • (7)svelte 教程: Props(属性)
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (数据大屏)(Hadoop)基于SSM框架的学院校友管理系统的设计与实现+文档
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)http-server应用
  • (转)Linux整合apache和tomcat构建Web服务器
  • .NET Micro Framework初体验
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET 读取 JSON格式的数据
  • .NET开发者必备的11款免费工具
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • @Transactional 竟也能解决分布式事务?