Windows环境使用SpringBoot整合Minio平替OSS

news/2024/7/8 10:31:45 标签: spring boot, 后端, java

目录

配置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.niftyadmin.cn/n/5537108.html

相关文章

2025深圳国际消费电子展览会

2025深圳国际消费电子展览会 时间:2025年06月25-27日 地点:深圳国际会展中心(新馆) 详询主办方陆先生 I38(前三位) I82I(中间四位) 9I72(后面四位) 展会介绍: 20…

Oracle数据库中导出多个表

要在Oracle数据库中导出多个表,可以使用exp(Export)工具或expdp(Data Pump Export)工具。下面是两种方法的详细说明: 1. 使用exp工具导出多个表: exp是Oracle的传统导出工具,它允许…

SpringMVC中执行流程

文章目录 14、SpringMVC执行流程14.1、SpringMVC常用组件14.2、DispatcherServlet初始化过程①初始化WebApplicationContext②创建WebApplicationContext③DispatcherServlet初始化策略 14.3、DispatcherServlet调用组件处理请求①processRequest()②doService()③doDispatch()…

51单片机第21步_将TIM0用作两个8位定时器同时将TIM1用作波特率发生器

本章重点讲解将TIM0用作两个8位定时器,同时将TIM1用作波特率发生器。 当定时器T0在方式3时,T1不能产生中断,但可以正常工作在方式0、1、2下,大多数情况下,T1将用作串口的波特率发生器。 1、定时器0工作在模式3框图&a…

探索人工智能在电子商务平台与游戏发行商竞争中几种应用方式

过去 12 年来,电脑和视频游戏的发行策略发生了巨大变化。数字游戏的销量首次超过实体游戏的销量 在20132020 年的封锁进一步加速了这一趋势。例如,在意大利,封锁的第一周导致数字游戏下载量 暴涨174.9%. 展望未来,市场有望继续增…

【Spring Boot】spring boot环境搭建

1、环境准备 JDK安装:确保安装了Java Development Kit (JDK) 1.8或更高版本。JDK是Java编程的基础,Spring Boot项目需要它来编译和运行。Maven或Gradle安装:选择并安装Maven或Gradle作为项目构建工具。Maven通过pom.xml文件来管理项目的依赖…

Ubuntu多显示器设置不同缩放比例

Ubuntu多显示器设置不同缩放比例 设备问题解决方案 设备 笔记本屏幕分辨率为2560 \times 1600,外接显示器的分辨率为3840 \times 2160。 问题 Ubuntu默认的显示器设置中,缩放仅能选择100%,200%,300%,400%。假…

使用selenium定位input标签下的下拉框

先来看一下页面效果&#xff1a;是一个可输入的下拉列表 再来看一下下拉框的实现方式&#xff1a; 是用<ul>和<li>方式来实现的下拉框&#xff0c;不是select类型的&#xff0c;所以不能用传统的select定位方法。 在着手定位元素前一定一定要先弄清楚下拉列表…