溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringBoot 2.x怎么整合MinIo文件服務

發(fā)布時間:2021-12-21 10:31:14 來源:億速云 閱讀:162 作者:iii 欄目:開發(fā)技術

本篇內容主要講解“SpringBoot 2.x怎么整合MinIo文件服務”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“SpringBoot 2.x怎么整合MinIo文件服務”吧!

MinIO 是高性能的對象存儲,兼容 Amazon S3接口,充分考慮開發(fā)人員的需求和體驗;支持分布式存儲,具備高擴展性、高可用性;部署簡單但功能豐富。官方的文檔也很詳細。它有多種不同的部署模式(單機部署,分布式部署)。

為什么說 MinIO 簡單易用,原因就在于它的啟動、運行和配置都很簡單??梢酝ㄟ^ docker 方式進行安裝運行,也可以下載二進制文件,然后使用腳本運行。

安裝

推薦使用 docker 一鍵安裝:

docker run -it -p 9000:9000 --name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=admin" \
-e "MINIO_SECRET_KEY=admin123456" \
-v /mnt/minio/data:/data \
-v /mnt/minio/config:/root/.minio \
minio/minio server /data

注意:

  • 密鑰必須大于8位,否則會創(chuàng)建失敗

  • 文件目錄和配置文件一定要映射到主機,你懂得

整合Nginx:

server{
   listen 80;
   server_name minio.cloudbed.vip;
   location /{
       proxy_set_header Host $http_host;
       proxy_pass http://localhost:9000;
   }
   location ~ /\.ht {
       deny  all;
   }
}

這樣,通過瀏覽器訪問配置的地址,使用指定的 MINIO_ACCESS_KEY 及 MINIO_SECRET_KEY 登錄即可。

簡單看了一下,功能還算可以,支持創(chuàng)建Bucket,文件上傳、刪除、分享、下載,同時可以對Bucket設置讀寫權限。

整合

Minio支持接入JavaScript、Java、Python、Golang等多種語言,這里我們選擇最熟悉的Java語言,使用最流行的框架 SpringBoot 2.x。

pom.xml引入:

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

application.properties引入:

# MinIo文件服務器
min.io.endpoint = http://minio.cloudbed.vip
min.io.accessKey = admin
min.io.secretKey = admin123456

MinIoProperties.java 配置實體:

/**
* 實體類
* 爪哇筆記:https://blog.52itstyle.vip
*/
@Data
@ConfigurationProperties(prefix = "min.io")
public class MinIoProperties {

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

擼一個工具類:

/**
* 工具類
* 爪哇筆記:https://blog.52itstyle.vip
*/
@Component
@Configuration
@EnableConfigurationProperties({MinIoProperties.class})
public class MinIoUtils {

   private MinIoProperties minIo;

   public MinIoUtils(MinIoProperties minIo) {
       this.minIo = minIo;
   }

   private MinioClient instance;

   @PostConstruct
   public void init() {
       try {
           instance = new MinioClient(minIo.getEndpoint(),minIo.getAccessKey(),minIo.getSecretKey());
       } catch (InvalidPortException e) {
           e.printStackTrace();
       } catch (InvalidEndpointException e) {
           e.printStackTrace();
       }
   }

   /**
    * 判斷 bucket是否存在
    * @param bucketName
    * @return
    */
   public boolean bucketExists(String bucketName){
       try {
           return instance.bucketExists(bucketName);
       } catch (Exception e) {
           e.printStackTrace();
       }
       return false;
   }

   /**
    * 創(chuàng)建 bucket
    * @param bucketName
    */
   public void makeBucket(String bucketName){
       try {
           boolean isExist = instance.bucketExists(bucketName);
           if(!isExist) {
               instance.makeBucket(bucketName);
           }
       } catch (Exception e) {
           e.printStackTrace();
       }
   }

   /**
    * 文件上傳
    * @param bucketName
    * @param objectName
    * @param filename
    */
   public void putObject(String bucketName, String objectName, String filename){
       try {
           instance.putObject(bucketName,objectName,filename,null);
       } catch (Exception e) {
           e.printStackTrace();
       }
   }
   /**
    * 文件上傳
    * @param bucketName
    * @param objectName
    * @param stream
    */
   public void putObject(String bucketName, String objectName, InputStream stream){
       try {
           instance.putObject(bucketName,objectName,stream,null);
       } catch (Exception e) {
           e.printStackTrace();
       }
   }
   /**
    * 刪除文件
    * @param bucketName
    * @param objectName
    */
   public void removeObject(String bucketName, String objectName){
       try {
           instance.removeObject(bucketName,objectName);
       } catch (Exception e) {
           e.printStackTrace();
       }
   }
//省略各種CRUD
}

目前SDK不支持文件夾的創(chuàng)建,如果想創(chuàng)建文件夾,只能通過文件的方式上傳并創(chuàng)建。

minIoUtils.putObject("itstyle","妹子圖/爪哇妹.jpg","C:\\爪哇妹.jpg");

一個實例只能有一個賬號,如果想使用多個賬號,需要創(chuàng)建多個實例。此外 minio還支持單主機,多塊磁盤以及分布式部署,不過對于大部分單體應用來說,單體已經(jīng)夠用了。

到此,相信大家對“SpringBoot 2.x怎么整合MinIo文件服務”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI