springboot中如何使用minio存储容器

目录
  • docker运行
  • java导包
  • 配置文件
  • 操作
  • 本地浏览设置
  • 总结

docker运行

docker run
  -p 9000:9000
  -p 9001:9001
  -v /mydata/minio/data:/data
  minio/minio server /data --console-address ":9001

java导包

最好是这个版本,其他版本尝试过都出bug了

		<dependency>
            <groupId>io.minio</groupId>
            <artifactId>minio</artifactId>
            <version>8.2.1</version>
        </dependency>

配置文件

spring:
  # 上传文件大小设置
  servlet:
    multipart:
      enabled: true
      max-file-size: 50MB
minio:
  endpoint: xxx:9000
  accesskey: xxx
  secretkey: xxx
  bucketName: xxx

操作

1、编写一个属性文件

@Data
@Component
@ConfigurationProperties(prefix = "minio") // 从配置文件的前缀拿
public class MinioProperties {

    private String endpoint;
    private String accessKey;
    private String secretKey;
}

2、编写一个minioClient

@Configuration
public class MinioConfig {

    @Resource
    private MinioProperties minioProperties;

    @Bean
    public MinioClient minioClient() {
        System.out.println(minioProperties.getAccessKey());
        System.out.println(minioProperties.getSecretKey());
        MinioClient minioClient = MinioClient.builder()
                .endpoint(minioProperties.getEndpoint())
                .credentials(minioProperties.getAccessKey(), minioProperties.getSecretKey())
                .build();
        return minioClient;
    }
}

3、上传文件Api

public class MinioServiceImpl implements MinioService {

    @Value("${minio.bucketName}")
    private String bucketName;
    @Value("${minio.endpoint}")
    private String endPoint;

    @Resource
    private MinioClient minioClient;

    @Override
    public List<String> uploadFile(MultipartFile[] file) throws ServerException, InsufficientDataException, ErrorResponseException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
        if (file == null || file.length == 0) {
            throw new APIException(ResultCode.PARAM_IS_BLANK);
        }
        List<String> fileUrlList = new ArrayList<>(file.length);
        String url = "";
        for (MultipartFile multipartFile : file) {
            // 1.获取文件名
            String originalFilename = multipartFile.getOriginalFilename();
            // 2.截取后缀名
            String imgSuffix = originalFilename.substring(originalFilename.lastIndexOf("."));
            // 3.生成唯一名
            String newFileName = UUID.randomUUID().toString() + imgSuffix;
            // 4.日期目录
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
            String dataPath = dateFormat.format(new Date());
            // 5.合成路径
            String finalFileName = dataPath + "/" + newFileName;
            // 别忘了bucketName
            url = endPoint + "/" + bucketName + "/" + finalFileName;
            try {
                // 文件上传
                InputStream in = multipartFile.getInputStream();
                minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(finalFileName).stream(
                        in, multipartFile.getSize(), -1)
                        .contentType(multipartFile.getContentType())
                        .build());
                in.close();
                fileUrlList.add(url);
            } catch (IOException e) {
                throw new APIException(ResultCode.COMMON_FAIL);
            }
        }
        return fileUrlList;
    }
}

本地浏览设置

通过上面这串url就可以直接访问图片了

总结

到此这篇关于springboot中如何使用minio存储容器的文章就介绍到这了,更多相关springboot minio存储容器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot2 整合MinIO中间件实现文件便捷管理功能

    本文源码:GitHub·点这里 || GitEE·点这里 一.MinIO简介 1.基础描述 MinIO是一个开源的对象存储服务.适合于存储大容量非结构化的数据,例如图片.视频.日志文件.备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等. MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL. 2.存储机制 MinIO使用按对象的嵌入式擦除编码保护数据,该编码以汇编代码编写,可提供最高的性能.MinIO使

  • springboot整合minio实现文件上传与下载且支持链接永久访问

    目录 1.minio部署 2.项目搭建 3.文件上传 4.文件下载 5.文件永久链接下载 1.minio部署 1.1 拉取镜像 docker pull minio/minio 1.2 创建数据目录 mkdir -p /home/guanz/minio mkdir -p /home/guanz/minio/midata 1.3 启动minio docker run -d -p 9000:9000 -p 9001:9001 --restart=always -e MINIO_ACCESS_KEY=g

  • 手把手教你SpringBoot轻松整合Minio

    前言 使用Spring Boot 可以非常方便.快速搭建项目,使我们不用关心框架之间的兼容性,适用版本等各种问题,我们想使用任何东西,仅仅添加一个配置就可以. 提示:以下是本篇文章正文内容,下面案例可供参考 一.技术介绍 1.Minio是什么? MinIO 是一个基于Apache License v2.0开源协议的对象存储服务.它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片.视频.日志文件.备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5

  • springboot中如何使用minio存储容器

    目录 docker运行 java导包 配置文件 操作 本地浏览设置 总结 docker运行 docker run -p 9000:9000 -p 9001:9001 -v /mydata/minio/data:/data minio/minio server /data --console-address ":9001 java导包 最好是这个版本,其他版本尝试过都出bug了 <dependency> <groupId>io.minio</groupId> &

  • springboot中的springSession的存储和获取实现

    利用redis进行springSession的存储: 存储: // 在session中保存用户信息 HttpSession session = httpRequest.getSession(true); session.setAttribute(Constants.SESSION_KEY_USER + userToken, user); // 存储sessionId redisService.hmSet(Constants.SESSION_ID_KEY , userToken, session.

  • SpringBoot中整合Minio文件存储的安装部署过程

    目录 背景 Minio安装部署 配置pom文件 配置yml文件 Minio工具类 初始化client 上传文件 下载文件 删除文件 背景 公司的开发框架集成了附件本地存储,阿里云,华为云等,现项目有要求附件存储与应用部署环境不能是同一台服务器,也不能使用云存储,经过技术选型后决定框架整合minio,将minio部署在另一台服务器开通外网端口即可解决问题 Minio安装部署 下载minio安装部署包,创建对应配置文件,这里提供一个整合后的压缩包 下载地址:http://xiazai.jb51.ne

  • 详解springboot中redis的使用和分布式session共享问题

    对于分布式使用Nginx+Tomcat实现负载均衡,最常用的均衡算法有IP_Hash.轮训.根据权重.随机等.不管对于哪一种负载均衡算法,由于Nginx对不同的请求分发到某一个Tomcat,Tomcat在运行的时候分别是不同的容器里,因此会出现session不同步或者丢失的问题. 实际上实现Session共享的方案很多,其中一种常用的就是使用Tomcat.Jetty等服务器提供的Session共享功能,将Session的内容统一存储在一个数据库(如MySQL)或缓存(如Redis)中. 本文旨在

  • SpringBoot中如何启动Tomcat流程

    前面在一篇文章中介绍了 Spring 中的一些重要的 context.有一些在此文中提到的 context,可以参看上篇文章. SpringBoot 项目之所以部署简单,其很大一部分原因就是因为不用自己折腾 Tomcat 相关配置,因为其本身内置了各种 Servlet 容器.一直好奇: SpringBoot 是怎么通过简单运行一个 main 函数,就能将容器启动起来,并将自身部署到其上 .此文想梳理清楚这个问题. 我们从SpringBoot的启动入口中分析: Context 创建 // Crea

  • 在SpringBoot中使用Logback管理记录日志

    SpringBoot的默认日志配置 SpringBoot 开箱即用,默认帮你配置了日志框架,使用 Commons Logging ,但是默认配置也提供了对常用日志的支持,如: Java Util Logging , Log4J , Log4J2 和 Logback.每种Logger都可以通过配置使用控制台或者文件输出日志内容. 控制台输出 关于log日志,首先说说的5个日志级别 LEVEL: 从高到低分别是 ERROR . WARN . INFO . DEBUG . TRACE 低级别的会输出高

  • SpringBoot中使用Ehcache的详细教程

    EhCache 是一个纯 Java 的进程内缓存框架,具有快速.精干等特点,是 Hibernate 中默认的 CacheProvider.用惯了 Redis,很多人可能已经忘记了还有 EhCache 这么一个缓存框架 一.简介 EhCache 是一个纯 Java 的进程内缓存框架,具有快速.精干等特点,是 Hibernate 中默认CacheProvider.Ehcache 是一种广泛使用的开源 Java 分布式缓存.主要面向通用缓存,Java EE 和轻量级容器.它具有内存和磁盘存储,缓存加载

  • SpringBoot中RabbitMQ集群的搭建详解

    目录 1. 两种模式 1.1 普通集群 1.2 镜像集群 1.3 节点类型 2. 搭建普通集群 2.1 预备知识 2.2 开始搭建 2.3 代码测试 2.4 反向测试 3. 搭建镜像集群 3.1 网页配置镜像队列 3.2 命令行配置镜像队列 4. 小结 单个的 RabbitMQ 肯定无法实现高可用,要想高可用,还得上集群. 今天松哥就来和大家聊一聊 RabbitMQ 集群的搭建. 1. 两种模式 说到集群,小伙伴们可能第一个问题是,如果我有一个 RabbitMQ 集群,那么是不是我的消息集群中的

  • SpringBoot中使用Redis作为全局锁示例过程

    目录 一.模拟没有锁情况下的资源竞争 二.使用redis加锁 微服务的项目中,一个服务我们启动多份,在不同的进程中.这些服务是无状态的,而由数据存储容器(mysql/redis/es)进行状态数据的持久化.这就会导致资源竞争,出现多线程的问题. 一.模拟没有锁情况下的资源竞争 public class CommonConsumerService { //库存个数 static int goodsCount = 900; //卖出个数 static int saleCount = 0; publi

  • 详解SpringBoot中如何使用布隆过滤器

    目录 前言 一.Guava 实现布隆过滤器 二.Hutool 布隆过滤器 三.Redission 布隆过滤器 四.小结 五.Guava 布隆过滤器结合 Redis 使用 昨天写了一篇Redis布隆过滤器相关的命令的文章,今天来说一说springboot中如何简单在代码中使用布隆过滤器吧. 目前市面上也有好几种实现方式,如果你需要高度定制化,可以完全从零实现,当然这不是一个简单的工程. 如果只是想快速开始的话,那么市面上现成的实现,无疑是最快的. 前言 今天说到的实现方式有以下几种: 引入 Gua

随机推荐