文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringBoot怎么整合Minio文件存储

2023-06-29 20:06

关注

这篇“SpringBoot怎么整合Minio文件存储”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot怎么整合Minio文件存储”文章吧。

背景

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

Minio安装部署

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

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

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

minio-service.xml和run.bat

<service>  <id>minio</id>  <name>MinIO Service</name>  <description>MinIO is a High Performance Object Storage</description>  <logpath>D:\minio\logs</logpath>  <log mode="roll-by-size">    <sizeThreshold>10240</sizeThreshold>    <keepFiles>8</keepFiles>  </log>  <executable>D:\minio\run.bat</executable></service>
set MINIO_ACCESS_KEY=adminset MINIO_SECRET_KEY=abcd@1234minio.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>

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

配置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;    }

以上就是关于“SpringBoot怎么整合Minio文件存储”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯