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

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

 更新時(shí)間:2022年09月20日 15:08:37   作者:Mr_Jin.  
MinIO是一個(gè)基于Apache?License?v2.0開源協(xié)議的對象存儲服務(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        //啟動

 后臺啟動,并打印日志

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

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

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

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下也會創(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 文件存儲配置信息
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 存儲桶
     * @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 {
	       	// 判斷存儲桶是否存在
	        createBucket(bucketName);
	        // 文件名
	        String originalFilename = file.getOriginalFilename();
	        // 新的文件名 = 存儲桶名稱_時(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)文章

  • 詳解SpringMVC和MyBatis框架開發(fā)環(huán)境搭建和簡單實(shí)用

    詳解SpringMVC和MyBatis框架開發(fā)環(huán)境搭建和簡單實(shí)用

    這篇文章主要介紹了詳解SpringMVC和MyBatis框架開發(fā)環(huán)境搭建和簡單實(shí)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • java字符串如何只保留數(shù)字、字母、中文

    java字符串如何只保留數(shù)字、字母、中文

    這篇文章主要介紹了java字符串如何只保留數(shù)字、字母、中文問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 利用Spring JPA中的@Version注解實(shí)現(xiàn)樂觀鎖

    利用Spring JPA中的@Version注解實(shí)現(xiàn)樂觀鎖

    樂觀鎖是數(shù)據(jù)庫和應(yīng)用程序中使用的一種并發(fā)控制策略,用于在多個(gè)事務(wù)嘗試更新單個(gè)記錄時(shí)確保數(shù)據(jù)完整性,Java Persistence API (JPA) 提供了一種借助@Version注解在 Java 應(yīng)用程序中實(shí)現(xiàn)樂觀鎖的機(jī)制,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2023-11-11
  • springboot整合easy-es實(shí)現(xiàn)數(shù)據(jù)的增刪改查的示例代碼

    springboot整合easy-es實(shí)現(xiàn)數(shù)據(jù)的增刪改查的示例代碼

    Easy-Es是一款基于ElasticSearch官方提供的RestHighLevelClient打造的低碼開發(fā)框架,本文主要介紹了springboot整合easy-es實(shí)現(xiàn)數(shù)據(jù)的增刪改查的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Java中的lambda和stream實(shí)現(xiàn)排序

    Java中的lambda和stream實(shí)現(xiàn)排序

    這篇文章主要介紹了Java中的lambda和stream實(shí)現(xiàn)排序,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • 將bean注入到Spring中的方式總結(jié)

    將bean注入到Spring中的方式總結(jié)

    在Java的Spring框架中,將bean注入到容器中是核心概念之一,這是實(shí)現(xiàn)依賴注入的基礎(chǔ),Spring提供了多種方式來將bean注入到容器中,本文給大家總結(jié)了將bean注入到Spring中的幾種方式,需要的朋友可以參考下
    2023-12-12
  • Mybatis批量提交實(shí)現(xiàn)步驟詳解

    Mybatis批量提交實(shí)現(xiàn)步驟詳解

    這篇文章主要介紹了Mybatis批量提交實(shí)現(xiàn)步驟詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java日期相關(guān)API的基本操作總結(jié)

    Java日期相關(guān)API的基本操作總結(jié)

    大概總結(jié)一下日期相關(guān)API操作原因是對于日期的操作我們開發(fā)中還是很常見的,包括在數(shù)據(jù)庫中保存日期,以及之前String類中對字符串的一些處理開發(fā)中都很常見,希望對大家有所幫助
    2022-11-11
  • java中的十個(gè)大類總結(jié)

    java中的十個(gè)大類總結(jié)

    java.lang.string字符串類將是無可爭議的冠軍在任何一天的普及和不可以否認(rèn)。這是最后一個(gè)類,用來創(chuàng)建操作不可變字符串字面值
    2013-10-10
  • 使用IDEA直接連接MySQL數(shù)據(jù)庫的方法

    使用IDEA直接連接MySQL數(shù)據(jù)庫的方法

    這篇文章主要介紹了如何使用IDEA直接連接MySQL數(shù)據(jù)庫,首先需要新建一個(gè)空項(xiàng)目,第一次連接 需要先下載驅(qū)動,文中給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-04-04

最新評論