欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot中整合Minio文件存儲(chǔ)的安裝部署過程

 更新時(shí)間:2022年04月03日 10:35:35   作者:code2roc  
這篇文章主要介紹了SpringBoot整合Minio文件存儲(chǔ)的相關(guān)知識(shí),詳細(xì)介紹了Minio安裝部署過程,需要的朋友可以參考下

背景

公司的開發(fā)框架集成了附件本地存儲(chǔ),阿里云,華為云等,現(xiàn)項(xiàng)目有要求附件存儲(chǔ)與應(yīng)用部署環(huán)境不能是同一臺(tái)服務(wù)器,也不能使用云存儲(chǔ),經(jīng)過技術(shù)選型后決定框架整合minio,將minio部署在另一臺(tái)服務(wù)器開通外網(wǎng)端口即可解決問題

Minio安裝部署

下載minio安裝部署包,創(chuàng)建對(duì)應(yīng)配置文件,這里提供一個(gè)整合后的壓縮包

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

創(chuàng)建minioData文件夾作為文件存儲(chǔ)路徑,解壓安裝包根據(jù)放置路徑修改對(duì)應(yīng)配置文件文件

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=admin
set MINIO_SECRET_KEY=abcd@1234
minio.exe server -address :9999 D:\minioData

解壓部署包后cmd進(jìn)入對(duì)應(yīng)解壓路徑,輸入命令minio.exe server D:\minioData 初始化后關(guān)閉cmd命令

使用服務(wù)安裝工具安裝服務(wù),選擇minio-service.exe

windows服務(wù)安裝工具下載地址:http://xiazai.jb51.net/202204/yuanma/windowsfuwu_jb51.rar

啟動(dòng)服務(wù)后訪問 http://127.0.0.1:9999/

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

進(jìn)入系統(tǒng)創(chuàng)建bucket用于存儲(chǔ)文件(類似于阿里云)

配置pom文件

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

配置yml文件

這里分別配置上傳/下載地址是正式項(xiàng)目可能配置外網(wǎng)端口后,服務(wù)器中不能訪問對(duì)應(yīng)的外網(wǎng)端口,上傳走內(nèi)網(wǎng),下載走外網(wǎng)

#minio配置
  # 上傳地址
  minio_uploadurl: http://192.168.1.42:9999/
  # 下載地址
  minio_downloadurl: http://192.168.1.42:9999/
  # 賬戶
  minio_accesskey: admin
  # 密碼
  minio_secrectkey: abcd@1234
  # 存儲(chǔ)文件夾
  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方法只是指定對(duì)應(yīng)的自定義存儲(chǔ)路徑

指定content-type是為了瀏覽器能打開附件時(shí),圖片和pdf等文件能夠在線瀏覽

不指定默認(rèn)都是stream,打開文件統(tǒng)一為下載

 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中指定的服務(wù)器地址綁定的,使用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;
    }

到此這篇關(guān)于SpringBoot中整合Minio文件存儲(chǔ)的安裝部署過程的文章就介紹到這了,更多相關(guān)SpringBoot整合Minio文件存儲(chǔ)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談在springboot中使用定時(shí)任務(wù)的方式

    淺談在springboot中使用定時(shí)任務(wù)的方式

    今天給大家?guī)淼氖顷P(guān)于Java的相關(guān)知識(shí),文章圍繞著在springboot中使用定時(shí)任務(wù)的方式展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • jvm原理之SystemGC源碼分析

    jvm原理之SystemGC源碼分析

    這篇文章主要介紹了jvm源碼分析之SystemGC的完全解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-01-01
  • Springboot?返回文件給前端的示例代碼

    Springboot?返回文件給前端的示例代碼

    這篇文章主要介紹了Springboot?返回文件給前端的示例代碼,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Java?深入理解創(chuàng)建型設(shè)計(jì)模式之建造者模式

    Java?深入理解創(chuàng)建型設(shè)計(jì)模式之建造者模式

    建造者(Builder)模式和工廠模式的關(guān)注點(diǎn)不同:建造者模式注重零部件的組裝過程,而工廠方法模式更注重零部件的創(chuàng)建過程,但兩者可以結(jié)合使用
    2022-02-02
  • ConcurrentHashMap線程安全及實(shí)現(xiàn)原理實(shí)例解析

    ConcurrentHashMap線程安全及實(shí)現(xiàn)原理實(shí)例解析

    這篇文章主要介紹了ConcurrentHashMap線程安全及實(shí)現(xiàn)原理實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • 關(guān)于MVC設(shè)計(jì)模式及流程解析

    關(guān)于MVC設(shè)計(jì)模式及流程解析

    這篇文章主要介紹了關(guān)于MVC設(shè)計(jì)模式及流程解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • springmvc開啟異步請(qǐng)求報(bào)錯(cuò)Java code using the Servlet API or

    springmvc開啟異步請(qǐng)求報(bào)錯(cuò)Java code using the Ser

    這篇文章主要為大家介紹了springmvc開啟異步請(qǐng)求報(bào)錯(cuò)Java code using the Servlet API or解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-02-02
  • Java字節(jié)碼ByteBuddy使用及原理解析下

    Java字節(jié)碼ByteBuddy使用及原理解析下

    這篇文章主要為大家介紹了Java字節(jié)碼ByteBuddy使用及原理解析下篇,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • java split用法詳解及實(shí)例代碼

    java split用法詳解及實(shí)例代碼

    這篇文章主要介紹了java split用法的相關(guān)資料,并附實(shí)例代碼,幫助大家學(xué)習(xí)參考,需要的朋友可以參考下
    2016-09-09
  • Java遍歷Map的5種方式實(shí)例

    Java遍歷Map的5種方式實(shí)例

    Map作為Java中的一種集合,以鍵值對(duì)的形式存放一批數(shù)據(jù),經(jīng)常會(huì)被我們應(yīng)用在項(xiàng)目中,下面這篇文章主要給大家介紹了關(guān)于Java遍歷Map的5種方式,需要的朋友可以參考下
    2023-02-02

最新評(píng)論