SpringBoot3整合MinIO

这篇具有很好参考价值的文章主要介绍了SpringBoot3整合MinIO。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

快速上手MinIO文件服务

配套视频:SpringBoot3整合MinIO
MinIO项目应用可参考视频 【SpringBoot3+Vue3+Uniapp小程序项目实战】

1. 概述

MinIO 是一个基于 Apache License v2.0 开源协议的对象存储服务。它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。

优点

  • MinIO 是一个非常轻量的服务。

  • 学习成本低,安装运维简单,开箱即用

  • 提供 Java 客户端、JS 客户端

下载 https://min.io/

2. 启动服务

打开cmd进入minio目录,执行minio server ./data ,其中data目录为文件存储目录

访问 控制台 http://localhost:9000,用户密码默认均为 minioadmin

3. SpringBoot3整合MinIO

  1. pom

    <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>okhttp</artifactId>
        <version>4.9.0</version>
    </dependency>
    <dependency>
        <groupId>org.jetbrains.kotlin</groupId>
        <artifactId>kotlin-stdlib</artifactId>
        <version>1.3.70</version>
    </dependency>
    <dependency>
        <groupId>io.minio</groupId>
        <artifactId>minio</artifactId>
        <version>8.3.4</version>
        <exclusions>
            <exclusion>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-stdlib</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
  2. application.yml

    my:
      minio:
        endpoint: 127.0.0.1             #  ip地址
        port: 9000                      #  端口号
        accessKey: minioadmin           #  账号
        secretKey: minioadmin           #  密码
        secure: false                   #  true代表用的是https,false则用的是http,默认值是true
        bucketName: "test"              #  桶的名字
        expiry: 8                       #  文件url访问有效期,单位小时
    
  3. 创建配置类

    package com.qqcn.file.config;
    
    import io.minio.MinioClient;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class MinioConfig {
        @Value("${my.minio.endpoint}")
        private String endpoint;
        @Value("${my.minio.port}")
        private Integer port;
        @Value("${my.minio.accessKey}")
        private String accessKey;
        @Value("${my.minio.secretKey}")
        private String secretKey;
        @Value("${my.minio.secure}")
        private Boolean secure;
    
    
        @Bean
        public MinioClient minioClient(){
            return MinioClient.builder()
                    .endpoint(endpoint,port,secure)
                    .credentials(accessKey, secretKey)
                    .build();
        }
    }
    
  4. Controller文章来源地址https://www.toymoban.com/news/detail-833886.html

    package com.qqcn.file.controller;
    
    import com.qqcn.common.vo.Result;
    import com.qqcn.file.utils.MinioUtils;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    import org.springframework.web.multipart.MultipartFile;
    
    import java.util.Map;
    
    @RestController
    @RequestMapping("/file")
    @Slf4j
    public class FileController {
    
        @Autowired
        private MinioUtils minioUtils;
    
        @PostMapping(value = "/upload", consumes = "multipart/form-data")
        public Result<Map<String,Object>> upload(@RequestPart("file") MultipartFile file){
            if(file == null || file.getSize() ==0){
                return Result.fail("上传文件不能为空文件");
            }
            try {
                Map<String, Object> uploadResult = minioUtils.upload(file);
                return Result.success(uploadResult);
            } catch (Exception e) {
                log.error(e.getMessage());
                return Result.fail("文件上传失败");
            }
        }
    
        @GetMapping("/url/{fileName}")
        public Result<String> getFileUrl(@PathVariable("fileName") String fileName){
            String url = minioUtils.getUrl(fileName);
            return Result.success(url,"success");
        }
        
        @DeleteMapping
        public Result<String> deleteFile(@RequestParam("fileName") String fileName){
            try {
                minioUtils.removeObject(fileName);
            } catch (Exception e) {
                return Result.fail("文件删除失败");
            }
            return Result.success();
        }
    
    }
    
    

到了这里,关于SpringBoot3整合MinIO的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • SpringBoot整合Mybatis-Plus(SpringBoot3)

    SpringBoot整合Mybatis-Plus(SpringBoot3)

    依赖pom.xml: pom.xml resource包下的Application.yml: Aollication.yml pojo包下的实体类User: User mapper包下的接口UserMapper: UserMapper 主启动类DemoPlusApplication DemoPlusApplication 测试类DemoApplicationTest: DemoApplicationTest 实现结果 检测数据库连接: C(Create): D(Delete): U(Update) R(Read)

    2024年03月20日
    浏览(6)
  • SpringBoot3 整合 ElasticSearch7 示例

    SpringBoot3 整合 ElasticSearch7 示例

    做仿牛客项目需要使用 es 做搜索,但是老师示例的是 SpringBoot2 + es6 去做的,然而我用的是 Spring3 + es7.17.10,于是踩了很多的坑。 在 es7 中,配置文件和查询所需的实现类都做了很大的改动,我以能成功运行的代码为例,大概说一下怎么配置和使用。 首先 yml 配置文件发生了变

    2024年02月07日
    浏览(11)
  • springboot3.2 整合 mybatis-plus

    springboot3.2 整合 mybatis-plus

    springboot3.2 正式发布了 迫不及待地的感受了一下 结果在整个mybatis-plus 的时候遇到了如下报错 主要是由于 mybatis-plus 中 mybatis 的整合包版本不够导致的 排除 mybatis-plus 中自带的 mybatis 整合包,单独引入即可 修改依赖后正常

    2024年02月04日
    浏览(8)
  • MinIO安装配置访问以及SpringBoot整合MinIO

    MinIO安装配置访问以及SpringBoot整合MinIO

    详细介绍了如何在CentOS7和Windows系统上安装配置MinIO对象存储服务,并提供了SpringBoot项目与MinIO整合的步骤,帮助开发者快速实现文件的上传、下载与管理。

    2024年02月04日
    浏览(12)
  • SpringBoot3整合SpringSecurity,实现自定义接口权限过滤

    SpringBoot3整合SpringSecurity,实现自定义接口权限过滤

    接口权限过滤是指对于某些接口或功能,系统通过设定一定的权限规则,只允许经过身份认证且拥有相应权限的用户或应用程序进行访问和操作 。这种技术可以有效地保护系统资源和数据安全,防止未授权的用户或程序进行恶意操作或非法访问。通常情况下,接口权限过滤需

    2024年02月08日
    浏览(7)
  • 解决SpringBoot3整合Druid的兼容性问题

    解决SpringBoot3整合Druid的兼容性问题

    本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 截止目前,Druid对于SpringBoot3的支持不够全面和友好;存在一些兼容性的问题,导致项目报错。 在此,针对该问题提供可行的解决方案;以供各位参考。 请您使用以下依赖: 图示如下: 请勿使用以下依赖: 请

    2024年02月03日
    浏览(5)
  • SpringBoot3整合OpenAPI3(Swagger3)

    SpringBoot3整合OpenAPI3(Swagger3)

    swagger2 更新到3后,再使用方法上发生了很大的变化,名称也变为 OpenAPI3 。 官方文档 openapi3 使用十分方便,做到这里后,你可以直接通过以下网址访问 swagger 页面。 1. @OpenAPIDefinition + @Info 用于定义整个 API 的信息,通常放在主应用类上。可以包括 API 的标题、描述、版本等信

    2024年01月22日
    浏览(9)
  • springboot整合minio

    springboot整合minio

    minio是对象存储服务。 它基于Apache License 开源协议,兼容Amazon S3云存储接口。适合存储非结构化数据,如图片,音频,视频,日志等。对象文件最大可以达到5TB。 优点有高性能,可扩展,操作简单,有图形化操作界面,读写性能优异等。 minio的安装也很简单,有兴趣的可以去

    2024年02月07日
    浏览(8)
  • Springboot3.0整合swagger,废弃Springfox改用Springdoc

    Springboot3.0整合swagger,废弃Springfox改用Springdoc

    Automated JSON API documentation for API\\\'s built with Spring 官网地址:springfox.io springdoc-openapi java library helps to automate the generation of API documentation using spring boot projects. 官网地址:https://springdoc.org/v2/ 注意 :使用的是V2版本,这个版本支持springboot3.0 之前springboot3.0之前我用的都是Springfox来集

    2023年04月09日
    浏览(9)
  • SpringBoot3.0 整合 ElasticSearch8.5.0 及使用

    这两个版本都是目前较新的版本,本文选用的依赖是 spring-boot-starter-data-elasticsearch:3.0 ,这个新版本也是改用了es的 elasticsearch-java API,全面推荐使用Lambda语法;另外SpringData本身推出了 Repository 功能(有些类似Mybatis-Plus)的功能,也支持注解简化开发。 Docker 快速部署 单机 ela

    2024年02月11日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包