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: 8080

spring:
  # 配置文件上传大小限制
  servlet:
    multipart:
      max-file-size: 50MB
      max-request-size: 50MB

minio:
  config:
    access-key: odyssey # 用户账号
    secret-key: 88888888 # 密码
    secure: false #如果是true,则用的是https而不是http,默认值是true
    bucketName: "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;

    @Bean
    public MinioClient getMinioClient() {
        return MinioClient.builder().endpoint(url).credentials(accessKey, secretKey).build();
    }
}

MinioUploadService

@Slf4j
@Service
public class MinioUploadService  {

    // 注入minio配置文件
    @Autowired
    private MinioConfig minioConfig;

    // 注入minio client
    @Autowired
    private MinioClient client;


    public FileVO upload(MultipartFile file) throws ServerException {
        FileVO fileVO = new FileVO();
        try {
            // 获取文件真实名称
            String originalFilename = file.getOriginalFilename();
            // 获取文件的扩展名 例如.jpg .doc
            String 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 {
    @Autowired
    private 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.mfbz.cn/a/775440.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c++习题05-斐波那契数列

目录 一,问题 二,思路 三,代码 一,问题 二,思路 根据题目,可以自己列出斐波那契数列(前四个)如下: 通过列出来的值,可以发现,前两个都是1&…

如何优化圆柱晶振32.768KHz的外壳接地?

圆柱晶振32.768KHz在电子设备中扮演着重要的角色,其精确的时钟信号对于许多应用至关重要。为了确保晶振的稳定性和准确性,外壳接地是一个关键步骤。 一、外壳接地的目的 外壳接地的主要目的是为了防止信号干扰。当晶振的外壳接地后,它相当于…

联合概率密度函数

目录 1. 什么是概率密度由联合概率密度求概率参考链接 1. 什么是概率密度 概率密度到底在表达什么? 外卖在20-40分钟内送达的概率 随机变量落在[20,40]之间的概率。下图中,对总面积做规范化处理,令总面积1, f ( x ) f(x) f(x)则成…

创建本地仓库

一、新建挂载目录 二、将挂载本地镜像挂载到目录 三、配置yum仓库 一、新建挂载目录 mkdir /BenDiCangKu 二、将挂载本地镜像挂载到目录 1、先连接本地光盘 2、挂载光盘 mount /dev/sr0 /BenDiCangKu 3、查看挂载 由此可见挂载成功 三、配置yum仓库 1、新建yum仓库文件…

Zabbix6.4安装教程

目录 前言 主要功能 常见应用场景 一. 环境准备 二. 部署安装 三. Web页面安装 前言 Zabbix是一个开源的企业级监控解决方案,用于监控各种网络设备、服务器、应用程序和云资源。它能够提供全面的监控、告警和数据分析功能,帮助管理员及时发现和解决…

测试几个 ocr 对日语的识别情况

测试几个 ocr 对日语的识别情况 1. EasyOCR2. PaddleOCR3. Deepdoc(识别pdf中图片)4. Deepdoc(识别pdf中文字)5. Nvidia neva-22b6. Claude 3.5 sonnet 识别图片中的文字7. Claude 3.5 sonnet 识别 pdf 中表格8. OpenAI gpt-4o 识…

【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十)-git(2)

下面是一些git的常用命令和基本操作,可以当做平常的笔记查询,用于学习!!! 文章目录 前言 一、git 二、git常用命令 总结 前言 下面是一些git的常用命令和基本操作,可以当做平常的笔记查询,用于…

UE4_材质基础_切线空间与法线贴图

学习笔记,不喜勿喷,侵权立删,祝愿大家生活越来越好! 一、切线空间 在《OpenGL基础11:空间》中提到了观察空间、裁剪空间、世界空间等。切线空间和它们一样,都属于坐标空间 上面就是一个…

基于jeecgboot-vue3的Flowable流程-集成仿钉钉流程(二)增加基本的发起人审批与多用户多实例

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。 1、AssigneeNode 增加approvalText public abstract class AssigneeNode extends Node {// 审批对象private AssigneeTypeEnum assigneeType;// 表单内人员private String formUser;// 表…

【智能制造-10】样条曲线、贝塞尔曲线、B样条

什么是样条? 样条是通过一组指定点集而生成平滑曲线的柔性带。 什么是B样条? B样条就相当于一个函数,这个函数在系数不同时就可以变化成各种曲线的形状。 B样条的优势? 保留了Bezier曲线的优势可局部修改,调整某一…

专题三:Spring源码中新建module

前面我们构建好了Spring源码,接下来肯定迫不及待来调试啦,来一起看看大名鼎鼎ApplicationContext 新建模块 1、基础步骤 1.1 自定义模块名称如:spring-self 1.2 选择构建工具因为spring使用的是gradle,所以这边需要我们切换默认…

21.【C语言】顺序结构和选择结构之if

顺序结构 从上至下,按顺序执行代码 选择结构 1.if语句 01零分支 if (条件)表达式; 02双分支 详见第10篇 if (条件) { ... } else { ... }03多分支 使用if嵌套 if (条件1)表达式1 else if (条件2)表达式2 else if (条件3)表达式3 else if (条件4)表达式4 .…

Patch SCN使用说明---惜分飞

软件说明 该软件是惜分飞(https://www.xifenfei.com)开发,仅用来查看和修改Oracle数据库SCN(System Change Number),主要使用在数据库因为某种原因导致无法正常启动的情况下使用该工具进行解决.特别是Oracle新版本中使用隐含参数,event,orad…

jmeter-beanshell学习2-beanshell断言

继续写,之前写了获取变量,设置变量,今天先写个简单点的断言。 一般情况用响应断言,就挺好使,但是自动化还要生成报告,如果断言失败了,要保存结果,只能用beanshell处理,顺…

mysql在windows下的安装

一,软件安装 只修改开头的系统盘 二,环境变量配置 找到MySQL安装目录对应的bin目录复制路径粘贴过来 三,cmd

通过端口和进程pid查找启动文件/脚本

今天审计一个程序又让GPT给我上了一课,记一下笔记: 1、首先该程序开启了8080端口,使用如下命令得到pid为1817 netstat -tunlp|grep 80802、使用pid得到父进程 pstree -ps 1817输出结果如下: 3、看出程序是由systemd启动的&…

Windows 玩转大模型第一天:大模型本地部署,调用大模型API可直接工程化应用(全部代码和详细部署流程)

Ollama 是一个开源框架,专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计。 以下是其主要特点和功能概述: 1. 简化部署:Ollama 目标在于简化在 Docker 容器中部署大型语言模型的过程,使得非专业用…

信创-办公软件应用工程师认证

随着国家对信息技术自主创新的战略重视程度不断提升,信创产业迎来前所未有的发展机遇。未来几年内,信创产业将呈现市场规模扩大、技术创新加速、产业链完善和国产化替代加速的趋势。信创人才培养对于推动产业发展具有重要意义。应加强高校教育、建立人才…

【EFK】efk 8收集docker容器日志测试

前言 目前,efk 全家桶已经更新到版本8 了,本章节我们使用8版本的elk搭建日志收集系统,了解它的配置运行过程,方便以后在更复杂的环境中更好的使用。 版本默认就是8最新的,也可以自己指定其他8的版本 elasticsearch: …

DisFormer:提高视觉动态预测的准确性和泛化能力

最新的研究进展已经显示出目标中心的表示方法在视觉动态预测任务中可以显著提升预测精度,并且增加模型的可解释性。这种表示方法通过将视觉场景分解为独立的对象,有助于模型更好地理解和预测场景中的变化。 尽管在静态图像的解耦表示学习方面已经取得了一…
最新文章