当前位置:

首页 > 编程开发 > SpringBoot怎么整合Minio文件存储

SpringBoot怎么整合Minio文件存储

背景公司的开发框架集成了附件本地存储,阿里云,华为云等,现项目有要求附件存储与应用部署环境不能是同一台服务器,也不能使用云存储,经过技术选型后决定框架整合minio,将minio部署在另一台服务器开通外网端口即可解决问题Minio安装部署下载minio安装部署包,创建对应配置文件,这里提供一个整合后的压缩包下载地址:http://xiazai.jb51.net/202204/yuanma/minio_jb51.rar创建minioData文件夹作为文件存储路径,解压安装包根据放置路径修改对应配置文件文件m

本文目录

    背景

    公司的开发框架集成了附件本地存储,阿里云,华为云等,现项目有要求附件存储与应用部署环境不能是同一台服务器,也不能使用云存储,经过技术选型后决定框架整合minio,将minio部署在另一台服务器开通外网端口即可解决问题

    Minio安装部署

    下载minio安装部署包,创建对应配置文件,这里提供一个整合后的压缩包

    下载地址:http://xiazai.jb51.net/202204/yuanma/minio_jb51.rar

    创建minioData文件夹作为文件存储路径,解压安装包根据放置路径修改对应配置文件文件

    minio-service.xml和run.bat

    
      minio
      MinIO Service
      MinIO is a High Performance Object Storage
      D:\minio\logs
      
        10240
        8
      
      D:\minio\run.bat
    
    set MINIO_ACCESS_KEY=admin
    set MINIO_SECRET_KEY=abcd@1234
    minio.exe server -address :9999 D:\minioData

    解压部署包后cmd进入对应解压路径,输入命令minio.exe server D:\minioData 初始化后关闭cmd命令

    使用服务安装工具安装服务,选择minio-service.exe

    windows服务安装工具下载地址:http://xiazai.jb51.net/202204/yuanma/windowsfuwu_jb51.rar

    启动服务后访问 http://127.0.0.1:9999/

    用户名:admin 密码:abcd@1234 (端口及账户密码都是在run.bat文件中配置的)

    进入系统创建bucket用于存储文件(类似于阿里云)

    SpringBoot怎么整合Minio文件存储

    配置pom文件--h3>

      
                io.minio
                minio
                7.1.0
            

    配置yml文件

    这里分别配置上传/下载地址是正式项目可能配置外网端口后,服务器中不能访问对应的外网端口,上传走内网,下载走外网

    #minio配置
      # 上传地址
      minio_uploadurl: http://192.168.1.42:9999/
      # 下载地址
      minio_downloadurl: http://192.168.1.42:9999/
      # 账户
      minio_accesskey: admin
      # 密码
      minio_secrectkey: abcd@1234
      # 存储文件夹
      minio_bucknetname: xxx

    Minio工具类

    初始化client

    public MinioClient InitMinio() {
            MinioClient minioClient = MinioClient.builder().
            endpoint(frameConfig.getMinio_uploadurl()).       		        credentials(frameConfig.getMinio_accesskey(),frameConfig.getMinio_secrectkey()).build();
            try{
                boolean isExist = minioClient.bucketExists(frameConfig.getMinio_bucknetname());
                if (!isExist) {
                    minioClient.makeBucket(frameConfig.getMinio_bucknetname());
                }
            }catch (Exception e){
                e.printStackTrace();
            }
            return minioClient;
        }

    上传文件

    getkey方法只是指定对应的自定义存储路径

    指定content-type是为了浏览器能打开附件时,图片和pdf等文件能够在线浏览

    不指定默认都是stream,打开文件统一为下载

     public boolean uploadMinioFile(InputStream stream, AttachmentDO attachmentDO,String contentType){
            boolean result = true;
            try{
                MinioClient minioClient = InitMinio();
                String bucketName =frameConfig.getMinio_bucknetname();
                PutObjectOptions option = new PutObjectOptions(stream.available(), -1);
                option.setContentType(contentType);
                minioClient.putObject(bucketName,getKey(attachmentDO),stream,option);
            }catch (Exception e){
                logger.error("Minio上传文件失败:" + e.getMessage());
                result = false;
            }
            return result;
        }

    下载文件

    需要注意的是,生成的文件下载地址是和MinioClient中指定的服务器地址绑定的,使用nginx代理后是无效的

     public  String readMinioCommonFile(AttachmentDO attachmentDO){
            String fileurl = "";
            try{
                MinioClient minioClient = InitMinio();
                String bucketName =frameConfig.getMinio_bucknetname();
                return minioClient.presignedGetObject(bucketName, getKey(attachmentDO));
            }catch (Exception e){
                logger.error("Minio读取文件失败:" + e.getMessage());
            }
            return fileurl;
        }

    删除文件

     public  boolean deleteMinioFile(AttachmentDO attachmentDO){
            boolean result = true;
            try{
                MinioClient minioClient = InitMinio();
                String bucketName =frameConfig.getMinio_bucknetname();
                minioClient.removeObject(bucketName,getKey(attachmentDO));
            }catch (Exception e){
                logger.error("Minio删除文件失败:" + e.getMessage());
                result = false;
            }
            return result;
        }
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    Windows下Minio安装与使用教程
    Windows下Minio安装与使用教程

    Windows下Minio的安装以及基本使用Minio是什么?Minio是一个开源的、云原生的分布式对象存储系统,是一个基于ApacheLicensev2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据。它一大特点就是轻量,虽然轻量,却拥有着不错的性能。使用简单,功能强大,支持各种平台,单个文件最大5TB,兼容AmazonS3接口,提供了Java、Python、GO等多版本SDK支持。官网:https://www.minio.org.cn接下来我们介

    springBoot项目常用目录有哪些
    springBoot项目常用目录有哪些

    springBoot项目常用目录springBoot项目的目录结构及名规范介绍基于SpringBoot开发时的目录结构及命名规范,通过介绍能够为你解决,在实际项目中如何规划目录结构?如何命名目录更规范?各个目录分别代表什么含义?等三个问题。目录说明servicex//项目名|-admin-ui//管理服务前端代码(一般将UI和SERVICE放到一个工程中,便于管理)|-servicex-auth//模块1|-servicex-common//模块2|-servicex-gateway//模块3|-serv

    使用PHP搭建MinIO分布式对象存储系统
    使用PHP搭建MinIO分布式对象存储系统

    随着云计算和大数据技术的发展,越来越多的企业和组织开始关注数据存储和处理的问题。传统的存储方案显然已经无法满足现代技术的需求,因此分布式对象存储成为了一个备受关注的话题。分布式对象存储的核心思想是将数据分散存储在多个节点上,通过智能的负载均衡和数据备份,实现更高效、更安全的数据管理。在开源领域中,MinIO是一个备受推崇的分布式对象存储实现方案之一,本文将介

    解析SpringBoot和SpringMVC之间的异同
    解析SpringBoot和SpringMVC之间的异同

    解析SpringBoot和SpringMVC之间的异同SpringBoot和SpringMVC是Java领域中非常重要的开发框架。虽然它们都属于Spring框架的一部分,但是在使用和功能上有一些明显的区别。本文将对SpringBoot和SpringMVC进行比较,解析它们之间的异同。首先,让我们来了解一下SpringBoot。SpringBo

    探索SpringCloud和SpringBoot在微服务领域的不同应用方式
    探索SpringCloud和SpringBoot在微服务领域的不同应用方式

    近年来,随着云计算和分布式架构的兴起,微服务架构的应用越来越广泛。而SpringCloud和SpringBoot作为Java开发中的两个重要框架,对于微服务的实现起到了重要的作用。然而,很多人对于它们在微服务领域的不同应用方式还存在一定的疑惑。本文将从不同的角度探索SpringCloud和SpringBoot在微服务中的应用方式。首先,我们来了解一下Spri

    SpringBoot和SpringMVC有何区别?
    SpringBoot和SpringMVC有何区别?

    SpringBoot与SpringMVC的不同之处在哪里?SpringBoot和SpringMVC是两个非常流行的Java开发框架,用于构建Web应用程序。尽管它们经常分别被使用,但它们之间的不同之处也是很明显的。首先,SpringBoot可以被看作是一个Spring框架的扩展或者增强版。它旨在简化Spring应用程序的初始化和配置过程,以帮助开发人

    比较SpringBoot和SpringMVC的异同
    比较SpringBoot和SpringMVC的异同

    SpringBoot和SpringMVC都是Java开发中常用的框架,但它们之间有一些明显的差异。本文将探究这两个框架的特点和用途,并对它们的差异进行比较。首先,我们来了解一下SpringBoot。SpringBoot是由Pivotal团队开发的,它旨在简化基于Spring框架的应用程序的创建和部署。它提供了一种快速、轻量级的方式来构建独立的、可执行

    SpringBoot与SpringMVC的不同点是什么?
    SpringBoot与SpringMVC的不同点是什么?

    SpringBoot和SpringMVC是Java开发中常用的两个框架,它们都是由Spring框架所提供的,但在功能和使用方式上有着一些区别。本文将分别介绍SpringBoot和SpringMVC的特点和区别。一、SpringBoot的特点:简化配置:SpringBoot通过约定优于配置的原则,大大简化了项目的配置过程。它可以自动配置项目所需要的参数,开发人

    比较和选择指南:SpringCloud与SpringBoot的功能比较
    比较和选择指南:SpringCloud与SpringBoot的功能比较

    SpringCloud和SpringBoot是目前Java领域中最热门的开源框架,它们分别提供了一套完善的微服务架构和快速构建应用程序的解决方案。本文将对它们的功能进行比较,并给出选择指南,以帮助读者了解它们的优势和适用场景。SpringBoot是一个用于开发Java应用程序的框架,它提供了一个简化的开发流程,集成了大量常用的功能和组件,减少了开发者的工作量

    SpringCloud与SpringBoot:分析它们之间的相似与不同
    SpringCloud与SpringBoot:分析它们之间的相似与不同

    深入剖析SpringCloud和SpringBoot的异同引言:在构建企业级应用程序时,Spring框架已经成为开发者们的首选。它提供了一种简单而强大的方式来构建独立于平台的应用程序。Spring框架由两个核心模块组成:SpringBoot和SpringCloud。虽然它们都可以帮助开发者快速搭建应用程序,但它们的目标和用途存在一些差异。本文将深入剖析Spr

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。