最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

minio安裝部署及使用的詳細(xì)過程

 更新時(shí)間:2022年09月20日 15:08:37   作者:Mr_Jin.  
MinIO是一個(gè)基于Apache?License?v2.0開源協(xié)議的對象存儲(chǔ)服務(wù),下面這篇文章主要給大家介紹了關(guān)于minio安裝部署及使用的詳細(xì)過程,文中通過實(shí)例代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下

一、服務(wù)器安裝minio

1.進(jìn)行下載

下載地址:

GNU/Linux

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

2.新建minio安裝目錄,執(zhí)行如下命令

mkdir -p /home/minio/data

把二進(jìn)制文件上傳到安裝目錄后,執(zhí)行:

chmod +x minio    //給予權(quán)限
export MINIO_ACCESS_KEY=minioadmin   //創(chuàng)建賬號
export MINIO_SECRET_KEY=minioadmin   //創(chuàng)建密碼
./minio server /home/minio/data        //啟動(dòng)

 后臺啟動(dòng),并打印日志

nohup ./minio server /home/minio/data > /home/minio/data/minio.log &

默認(rèn)的端口為:9000

自定義端口方式:自定義啟動(dòng)端口號以及控制臺端口號,不設(shè)置則控制臺會(huì)自動(dòng)配置其他端口號,非常不方便

nohup ./minio server --address :9000 --console-address :9001 /home/minio/data > /home/minio/data/minio.log &

查看狀態(tài)

ps -ef|grep minio

二、進(jìn)行訪問,并設(shè)置桶

1.訪問

地址:http://127.0.0.1:9000

 輸入賬號密碼后:

進(jìn)行創(chuàng)建桶,名字自取,創(chuàng)建完成后服務(wù)器home/minio/data下也會(huì)創(chuàng)建這個(gè)文件目錄

 進(jìn)行設(shè)置:

必須將規(guī)則設(shè)置成readwrite ,才可進(jìn)行讀取文件,否則只存或者只能讀。

 三、springboot進(jìn)行實(shí)現(xiàn)

1.引入依賴

<!-- minio 相關(guān)依賴 -->
<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>3.0.10</version>
</dependency>
<!-- alibaba的fastjson -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.51</version>
</dependency>
<!-- thymeleaf模板引擎 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

2.在 application.yml 文件中加入 MinIO 服務(wù)器的相關(guān)信息

# minio 文件存儲(chǔ)配置信息
minio:
  endpoint: http://127.0.0.1:9000
  accesskey: minioadmin
  secretKey: minioadmin

3.創(chuàng)建實(shí)體類

這一步,我們將配置文件中 minio 的配置信息通過注解的方式注入到 MinioProp 這個(gè)實(shí)體中,方便后面我們使用

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
 
/**
 * minio 屬性值
 */
@Data
@Component
@ConfigurationProperties(prefix = "minio")
public class MinioProp {
    /**
     * 連接url
     */
    private String endpoint;
    /**
     * 用戶名
     */
    private String accesskey;
    /**
     * 密碼
     */
    private String secretKey;
}
 

4.創(chuàng)建核心配置類

通過注入 MinIO 服務(wù)器的相關(guān)配置信息,得到 MinioClient 對象,我們上傳文件依賴此對象

import io.minio.MinioClient;
import io.minio.errors.InvalidEndpointException;
import io.minio.errors.InvalidPortException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
/**
 * minio 核心配置類
 */
@Configuration
@EnableConfigurationProperties(MinioProp.class)
public class MinioConfig {
 
    @Autowired
    private MinioProp minioProp;
 
    /**
     * 獲取 MinioClient
     *
     * @return
     * @throws InvalidPortException
     * @throws InvalidEndpointException
     */
    @Bean
    public MinioClient minioClient() throws InvalidPortException, InvalidEndpointException {
        return new MinioClient(minioProp.getEndpoint(), minioProp.getAccesskey(), minioProp.getSecretKey());
    }
}
 

5.上傳工具類

import com.alibaba.fastjson.JSONObject;
import com.zyxx.email.common.redis.RedisUtil;
import com.zyxx.email.utils.DateUtils;
import io.minio.MinioClient;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
 
@Slf4j
@Component
public class MinioUtils {
 
    @Autowired
    private MinioClient client;
    @Autowired
    private MinioProp minioProp;
 
    /**
     * 創(chuàng)建bucket
     *
     * @param bucketName bucket名稱
     */
    @SneakyThrows
    public void createBucket(String bucketName) {
        if (!client.bucketExists(bucketName)) {
            client.makeBucket(bucketName);
        }
    }
 
    /**
     * 上傳文件
     *
     * @param file       文件
     * @param bucketName 存儲(chǔ)桶
     * @return
     */
    public JSONObject uploadFile(MultipartFile file, String bucketName) throws Exception {
        JSONObject res = new JSONObject();
        res.put("code", 0);
        // 判斷上傳文件是否為空
        if (null == file || 0 == file.getSize()) {
            res.put("msg", "上傳文件不能為空");
            return res;
        }
        try {
	       	// 判斷存儲(chǔ)桶是否存在
	        createBucket(bucketName);
	        // 文件名
	        String originalFilename = file.getOriginalFilename();
	        // 新的文件名 = 存儲(chǔ)桶名稱_時(shí)間戳.后綴名
	        String fileName = bucketName + "_" + System.currentTimeMillis() + originalFilename.substring(originalFilename.lastIndexOf("."));
	        // 開始上傳
	        client.putObject(bucketName, fileName, file.getInputStream(), file.getContentType());
	        res.put("code", 1);
	        res.put("msg", minioProp.getEndpoint() + "/" + bucketName + "/" + fileName);
	        return res;
		}  catch (Exception e) {
            log.error("上傳文件失?。簕}", e.getMessage());
        }
        res.put("msg", "上傳失敗");
        return res;
    }
}
 

6.controller接口

import com.alibaba.fastjson.JSONObject;
import com.zyxx.email.common.minio.MinioUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
 
import javax.servlet.http.HttpServletRequest;
 
@Controller
public class MinioController {
 
    @Autowired
    private MinioUtils minioUtils;
 
 
    /**
     * 上傳
     *
     * @param file
     * @param request
     * @return
     */
    @PostMapping("/upload")
    @ResponseBody
    public String upload(@RequestParam(name = "file", required = false) MultipartFile file, HttpServletRequest request) {
        JSONObject res = null;
        try {
            res = minioUtils.uploadFile(file, "product");
        } catch (Exception e) {
            e.printStackTrace();
            res.put("code", 0);
            res.put("msg", "上傳失敗");
        }
        return res.toJSONString();
    }
}
 

測試

通過網(wǎng)址進(jìn)行訪問:

PostMan進(jìn)行測試上傳;

 

刪除文件:

    //文件刪除
    @DeleteMapping
    public String delete(String name) {
        try {
            MinioClient minioClient = new MinioClient(ENDPOINT, ACCESSKEY, SECRETKEY);
            minioClient.removeObject(BUCKETNAME, name);
        } catch (Exception e) {
            return "刪除失敗"+e.getMessage();
        }
        return "刪除成功";
    }

總結(jié)

到此這篇關(guān)于minio安裝部署及使用的文章就介紹到這了,更多相關(guān)minio安裝部署使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java解析多層嵌套json字符串問題

    java解析多層嵌套json字符串問題

    這篇文章主要介紹了java解析多層嵌套json字符串問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • SpringBoot整合ES-Elasticsearch的實(shí)例

    SpringBoot整合ES-Elasticsearch的實(shí)例

    這篇文章主要介紹了SpringBoot整合ES-Elasticsearch的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • SpringBoot獲取resources目錄下的文件

    SpringBoot獲取resources目錄下的文件

    在 Spring Boot 項(xiàng)目中,獲取 resources 目錄中的文件路徑通常涉及到訪問類路徑資源,Spring Boot 提供了一些工具類和方法,下面小編就來和大家詳細(xì)聊聊
    2024-10-10
  • Java轉(zhuǎn)換解析中間帶有 “T“和“Z“ 的時(shí)間格式

    Java轉(zhuǎn)換解析中間帶有 “T“和“Z“ 的時(shí)間格式

    這篇文章主要給大家介紹了關(guān)于Java轉(zhuǎn)換解析中間帶有 “T“和“Z“ 的時(shí)間格式,相信很多小伙伴在時(shí)間格式轉(zhuǎn)換的時(shí)候非常頭疼,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • SpringBoot實(shí)現(xiàn)登錄攔截的示例代碼

    SpringBoot實(shí)現(xiàn)登錄攔截的示例代碼

    如果我們不進(jìn)行登錄攔截的話,即使我們跳過登錄頁面直接去訪問任意一個(gè)頁面也能訪問成功,那么登錄功能就沒有意義,同時(shí)也會(huì)存在安全問題,本文就來介紹一下SpringBoot登錄攔截,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09
  • Spring Boot 單元測試JUnit的實(shí)踐

    Spring Boot 單元測試JUnit的實(shí)踐

    JUnit是一款優(yōu)秀的開源Java單元測試框架,也是目前使用率最高最流行的測試框架,這篇文章主要介紹了Spring Boot 單元測試JUnit的實(shí)踐,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Java并發(fā)編程之阻塞隊(duì)列詳解

    Java并發(fā)編程之阻塞隊(duì)列詳解

    這篇文章主要為大家詳細(xì)介紹了Java并發(fā)編程之阻塞隊(duì)列,什么是阻塞隊(duì)列?主要的阻塞隊(duì)列及其方法介紹,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Java實(shí)現(xiàn)查找算法的示例代碼(二分查找、插值查找、斐波那契查找)

    Java實(shí)現(xiàn)查找算法的示例代碼(二分查找、插值查找、斐波那契查找)

    查找就是根據(jù)給定的某個(gè)值,在查找表中確定一個(gè)其關(guān)鍵字等于給定值的數(shù)據(jù)元素。本文介紹了常見的數(shù)據(jù)查找算法:順序查找、二分查找、插值查找和斐波那契查找等以及相應(yīng)的Java代碼實(shí)現(xiàn)。需要的可以參考一下
    2022-01-01
  • Java synchronized的鎖升級過程詳解

    Java synchronized的鎖升級過程詳解

    在 JDK 1.6之前,synchronized 是一個(gè)重量級、效率比較低下的鎖,但是在JDK 1.6后,JVM 為了提高鎖的獲取與釋放效,,對 synchronized 進(jìn)行了優(yōu)化,所以本文給大家介紹了synchronized的鎖升級過程,需要的朋友可以參考下
    2024-04-04
  • Java中的IO讀寫原理詳解

    Java中的IO讀寫原理詳解

    這篇文章主要介紹了Java中的IO讀寫原理,IO是指輸入和輸出操作的技術(shù),它提供了一組用于讀取和寫入數(shù)據(jù)的類,以及用于處理字符和字節(jié)數(shù)據(jù)的接口,這些類和接口可以用于讀取和寫入文件、網(wǎng)絡(luò)流、內(nèi)存緩沖區(qū)等各種數(shù)據(jù)源和目標(biāo),需要的朋友可以參考下
    2023-08-08

最新評論

富锦市| 抚顺县| 故城县| 吉安市| 临澧县| 甘孜县| 射洪县| 中山市| 镇宁| 托里县| 唐河县| 常宁市| 郯城县| 芜湖县| 华池县| 四会市| 社会| 镇巴县| 黄大仙区| 青神县| 华安县| 安龙县| 沧州市| 文登市| 明光市| 嵊泗县| 苍梧县| 岳阳县| 绍兴县| 广灵县| 甘肃省| 古田县| 郯城县| 乌海市| 资阳市| 宣武区| 阳信县| 漯河市| 德化县| 沭阳县| 禹州市|