当前位置: 首页 > 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中显示了这个文件,至此,教程结束

http://www.lryc.cn/news/392353.html

相关文章:

  • LeetCode 196, 73, 105
  • 在Apache HTTP服务器上配置 TLS加密
  • C语言力扣刷题11——打家劫舍1——[线性动态规划]
  • 房屋租赁管理小程序的设计
  • oracle sql语句 排序 fjd = ‘0101‘ 排在 fjd = ‘0103‘ 的前面
  • 初试成绩占比百分之70!计算机专硕均分340+!华中师范大学计算机考研考情分析!
  • 【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十)-git(2)
  • JMH320【亲测】【御剑九歌】唯美仙侠手游御剑九歌+WIN学习手工端+视频教程+开服清档+运营后台+授权GM物品充值后台
  • 【matlab】信号分解/故障诊断——智能优化算法优化VMD
  • 【重磅】万能模型-直接能换迪丽热巴的模型
  • Web基础和HTTP协议
  • Mini-L-CTF-2022 minispringboot Thymeleaf模板注入 spel的绕过
  • LLM - 神经网络的组成
  • C++:拷贝构造函数
  • 云服务出现故障这样处理
  • CVPR2024自动驾驶轨迹预测方向的论文整理
  • 数据结构——队列练习题
  • PLL和CDR的内部结构及其区别
  • HarmonyOS APP应用开发项目- MCA助手(Day02持续更新中~)
  • 华为交换机 LACP协议
  • node 下载文件到网络共享目录
  • STM32基础知识
  • 安装docker版rabbitmq 3.12
  • c++重定向输出和输出(竞赛讲解)
  • 实在智能对话钉钉:宜搭+实在Agent,AI时代的工作方式
  • MySQL的Docker部署方式
  • 光伏电站数据采集方案(基于工业路由器部署)
  • 一文让你彻底搞懂什么是CDN
  • 1023记录
  • 【并发编程JUC】AQS详解