日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

SpringBoot2 整合MinIO中间件,实现文件便捷管理

發(fā)布時(shí)間:2025/3/17 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot2 整合MinIO中间件,实现文件便捷管理 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文源碼:GitHub·點(diǎn)這里 || GitEE·點(diǎn)這里

一、MinIO簡(jiǎn)介

1、基礎(chǔ)描述

MinIO是一個(gè)開源的對(duì)象存儲(chǔ)服務(wù)。適合于存儲(chǔ)大容量非結(jié)構(gòu)化的數(shù)據(jù),例如圖片、視頻、日志文件、備份數(shù)據(jù)和容器/虛擬機(jī)鏡像等,而一個(gè)對(duì)象文件可以是任意大小,從幾kb到最大5T不等。

MinIO是一個(gè)非常輕量的服務(wù),可以很簡(jiǎn)單的和其他應(yīng)用的結(jié)合,類似 NodeJS, Redis 或者 MySQL。

2、存儲(chǔ)機(jī)制

MinIO使用按對(duì)象的嵌入式擦除編碼保護(hù)數(shù)據(jù),該編碼以匯編代碼編寫,可提供最高的性能。MinIO使用Reed-Solomon代碼將對(duì)象劃分為n/2個(gè)數(shù)據(jù)和n / 2個(gè)奇偶校驗(yàn)塊-盡管可以將它們配置為任何所需的冗余級(jí)別。 這意味著在12個(gè)驅(qū)動(dòng)器設(shè)置中,將一個(gè)對(duì)象分片為6個(gè)數(shù)據(jù)和6個(gè)奇偶校驗(yàn)塊。即使丟失了多達(dá)5個(gè)((n/2)–1)個(gè)驅(qū)動(dòng)器(無(wú)論是奇偶校驗(yàn)還是數(shù)據(jù)),仍然可以從其余驅(qū)動(dòng)器可靠地重建數(shù)據(jù)。MinIO的實(shí)現(xiàn)可確保即使丟失或無(wú)法使用多個(gè)設(shè)備,也可以讀取對(duì)象或?qū)懭胄聦?duì)象。最后,MinIO的擦除代碼位于對(duì)象級(jí)別,并且可以一次修復(fù)一個(gè)對(duì)象。

二、MinIO環(huán)境搭建

1、安裝包下載

https://dl.min.io/server/minio/release/linux-amd64/minio

建議使用某雷下載,速度會(huì)快點(diǎn),下載包上傳到/opt/minioconfig/run目錄下。

2、創(chuàng)建數(shù)據(jù)存儲(chǔ)目錄

mkdir -p /data/minio/data

3、服務(wù)啟動(dòng)

啟動(dòng)并指定數(shù)據(jù)存放地址

/opt/minioconfig/run/minio server /data/minio/data/

輸出日志

Endpoint: http://localhost:9000 http://127.0.0.1:9000 AccessKey: minioadmin SecretKey: minioadmin

這里就是登錄地址和賬號(hào)密碼。

三、整合SpringBoot環(huán)境

1、基礎(chǔ)依賴

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>3.0.12</version> </dependency>

2、基礎(chǔ)配置

配置要素:地址和端口,登錄名,密碼,HTML存儲(chǔ)桶,圖片存儲(chǔ)桶。

minio:endpoint: http://192.168.72.133:9000accessKey: minioadminsecretKey: minioadminbucketNameHtml: htmlbucketNameImage: image

文件上傳之后,可以基于文件地址直接訪問(wèn),但是需要在MinIO中配置文件的讀寫權(quán)限:

3、配置參數(shù)類

@Component @ConfigurationProperties(prefix = "minio") public class ParamConfig {private String endpoint ;private String accessKey ;private String secretKey ;private String bucketNameHtml ;private String bucketNameImage ;// 省略 get 和 set方法 }

4、基于MinIO配置類

封裝MinIO客戶端連接工具,文件上傳的基礎(chǔ)方法,返回文件在MinIO服務(wù)上的URL地址。

import io.minio.MinioClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import javax.annotation.Resource;@Component public class MinIOConfig {private static final Logger LOGGER = LoggerFactory.getLogger(MinIOConfig.class) ;@Resourceprivate ParamConfig paramConfig ;private MinioClient minioClient ;/*** 初始化 MinIO 客戶端*/@PostConstructprivate void init(){try {minioClient = new MinioClient(paramConfig.getEndpoint(),paramConfig.getAccessKey(),paramConfig.getSecretKey());} catch (Exception e) {e.printStackTrace();LOGGER.info("MinIoClient init fail ...");}}/*** 上傳 <html> 頁(yè)面*/public String uploadHtml (String fileName, String filePath) throws Exception {minioClient.putObject(paramConfig.getBucketNameHtml(),fileName,filePath);return paramConfig.getEndpoint()+"/"+paramConfig.getBucketNameHtml()+"/"+fileName ;}/*** 上傳 <img> 圖片*/public String uploadImg (String imgName, String imgPath) throws Exception {minioClient.putObject(paramConfig.getBucketNameImage(),imgName,imgPath);return paramConfig.getEndpoint()+"/"+paramConfig.getBucketNameImage()+"/"+imgName ;} }

5、服務(wù)實(shí)現(xiàn)

提供兩個(gè)基礎(chǔ)方法:HTML和圖片上傳,存儲(chǔ)在不同位置。

import com.minio.file.config.MinIOConfig; import org.springframework.stereotype.Service; import javax.annotation.Resource;@Service public class UploadServiceImpl implements UploadService {@Resourceprivate MinIOConfig minIOConfig ;// 上傳 <html> ,返回服務(wù)器地址@Overridepublic String uploadHtml(String fileName, String filePath) throws Exception {return minIOConfig.uploadHtml(fileName,filePath);}// 上傳 <img> ,返回服務(wù)器地址@Overridepublic String uploadImg(String imgName, String imgPath) throws Exception {return minIOConfig.uploadImg(imgName,imgPath);} }

上傳之后,基于瀏覽器訪問(wèn)接口返回的url,查看效果:

四、源代碼地址

GitHub·地址 https://github.com/cicadasmile/middle-ware-parent GitEE·地址 https://gitee.com/cicadasmile/middle-ware-parent

推薦閱讀:SpringBoot進(jìn)階系列

序號(hào)文章標(biāo)題
01Boot2 整合 shard-jdbc 中間件,實(shí)現(xiàn)數(shù)據(jù)分庫(kù)分表
02Boot2 整合 JavaMail ,實(shí)現(xiàn)異步發(fā)送郵件功能
03Boot2 整合 RocketMQ ,實(shí)現(xiàn)請(qǐng)求異步處理
04Boot2 整合 Swagger2 ,構(gòu)建接口管理界面
05Boot2 整合 QuartJob ,實(shí)現(xiàn)定時(shí)器實(shí)時(shí)管理
06Boot2 整合 Redis集群 ,實(shí)現(xiàn)消息隊(duì)列場(chǎng)景
07Boot2 整合 Dubbo框架 ,實(shí)現(xiàn)RPC服務(wù)遠(yuǎn)程調(diào)用
08Boot2 整合 ElasticSearch框架,實(shí)現(xiàn)高性能搜索引擎
09Boot2 整合 JWT 框架,解決Token跨域驗(yàn)證問(wèn)題
10Boot2 整合 FastDFS 中間件,實(shí)現(xiàn)文件分布管理
11Boot2 整合 Shiro 框架,實(shí)現(xiàn)用戶權(quán)限管理
12Boot2 整合 Security 框架,實(shí)現(xiàn)用戶權(quán)限管理
13Boot2 整合 ClickHouse數(shù)據(jù)庫(kù),實(shí)現(xiàn)數(shù)據(jù)高性能查詢分析
14Boot2 整合 Drools規(guī)則引擎,實(shí)現(xiàn)高效的業(yè)務(wù)規(guī)則
15Boot2 整合 多數(shù)據(jù)源,配置MybatisPlus增強(qiáng)插件
16Boot2 整合 Zookeeper組件,管理架構(gòu)中服務(wù)協(xié)調(diào)
17Boot2 整合Nacos組件,環(huán)境搭建和入門案例詳解
18文件系統(tǒng)(01):基于Boot2框架,管理Excel和PDF
18文件系統(tǒng)(02):基于Boot2框架,管理Xml和CSV
19Boot2 整合 Kafka組件,應(yīng)用案例和流程詳解
20Boot2 整合 ElasticJob框架,定制化管理流程
21Boot2 整合JTA組件,多數(shù)據(jù)源事務(wù)管理
22Boot2 整合FreeMarker模板,完成頁(yè)面靜態(tài)化處理

總結(jié)

以上是生活随笔為你收集整理的SpringBoot2 整合MinIO中间件,实现文件便捷管理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。