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

minio的下載和springboot整合minio使用方法

 更新時間:2024年09月20日 11:04:15   作者:java炒飯小能手  
本文介紹了如何通過Docker拉取MinIO鏡像,并創(chuàng)建MinIO容器的過程,首先,需要在本地創(chuàng)建/data和/conf兩個目錄用于掛載MinIO的數(shù)據(jù)和配置文件,接下來,通過docker?run命令啟動容器,設(shè)置MinIO的訪問端口、用戶名、密碼等信息,感興趣的朋友一起看看吧

下載minio

基于docker拉取minio鏡像

docker pull minio/minio

 創(chuàng)建minio容器

先創(chuàng)建/root/minio/data 和 /root/minio/conf
docker run -d -p 9000:9000 -p 9001:9001 --name minio \
-e "MINIO_ROOT_USER=htsdg" \
-e "MINIO_ROOT_PASSWORD=12345678" \
-v /root/minio/data:/data \     
-v /root/minio/conf:/root/.minio \
minio/minio server  --console-address ":9001" /data 

 解釋:

9000為映射端口,9001為控制臺訪問的端口(端口號可以隨意設(shè)置),控制臺訪問路徑:

http://服務(wù)器ip地址:9001/login

 接下來就是用戶和密碼,如何就是minio的數(shù)據(jù)和配置文件所掛載的目錄(可以自己設(shè)置成/../....../data 和 /../....../conf)

 具體使用

導(dǎo)入需要的依賴

        <dependency>
            <groupId>io.minio</groupId>
            <artifactId>minio</artifactId>
            <version>8.2.2</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

 在yml文件中配置:

minio:
  endpoint: http://********:9000 #Minio服務(wù)所在地址
  accessKey: htsdg                #連接Minio用戶名
  secretKey: 12345678               #連接Minio密碼
  bucketName: bt01              #Minio數(shù)據(jù)桶名稱

創(chuàng)建好文件和類。

MinIoConfig類:

package com.htsdg.Properties;
import io.minio.MinioClient;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Data
@Configuration
@ConfigurationProperties(prefix = "minio")
public class MinIoConfig {
    /**
     * 訪問用戶
     */
    @Value("${minio.accessKey}")
    private String accessKey;
    /**
     * 密鑰
     */
    @Value("${minio.secretKey}")
    private String secretKey;
    /**
     * 訪問api Url
     */
    @Value("${minio.endpoint}")
    private String endpoint;
    /**
     * 桶名稱
     */
    @Value("${minio.bucketName}")
    private String bucketName;
    /**
     * 創(chuàng)建MinIo客戶端
     *
     * @return
     */
    @Bean
    public MinioClient minioClient() {
        return MinioClient.builder()
                .endpoint(endpoint)
                .credentials(accessKey, secretKey)
                .build();
    }
}

MinIOUtil類:

這里我就使用了一個bucket,你需要先去控制臺創(chuàng)建一個bucket,我這里創(chuàng)建的是bt01。我的上傳之后的文件路徑是 xycj/原文件名

package com.htsdg.utils;
import io.minio.GetObjectArgs;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import io.minio.errors.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
@Component
public class MinIOUtil {
    @Autowired
    private MinioClient minioClient;
    /**
     *  桶名稱
     */
    @Value("${minio.bucketName}")
    private String bucketName;
    /**
     * putObject上傳文件
     *
     * @param file 文件
     * @return filePath
     */
    public String putObject(MultipartFile file) throws IOException, ServerException, InsufficientDataException, InternalException, InvalidResponseException, InvalidKeyException, NoSuchAlgorithmException, XmlParserException, ErrorResponseException {
        //文件名
        String originalFilename = file.getOriginalFilename();
        //文件流
        InputStream inputStream = file.getInputStream();
        //文件大小
        long size = file.getSize();
        //文件路徑
        String filePath = createFilePath(originalFilename);
        System.out.println(filePath+"\t文件路徑");
        //存儲方法 putObject
        minioClient.putObject(PutObjectArgs.builder()
                .bucket(bucketName)
                .object(filePath)
                .stream(inputStream, size, -1)
                .contentType(file.getContentType())
                .build());
        return filePath;
    }
    /**
     * 下載文件
     *
     * @param filePath 文件路徑
     */
    public void getObject(HttpServletResponse httpServletResponse, String filePath) throws IOException, InvalidKeyException, InvalidResponseException, InsufficientDataException, NoSuchAlgorithmException, ServerException, InternalException, XmlParserException, ErrorResponseException {
        String fileName = getFileName(filePath);
        InputStream inputStream = minioClient.getObject(GetObjectArgs.builder()
                .bucket(bucketName)
                .object(filePath)
                .build());
        downloadFile(httpServletResponse, inputStream, fileName);
    }
    /**
     * 獲取文件路徑
     *
     * @param originalFilename 原始文件名稱
     * @return FilePath
     */
    public String createFilePath(String originalFilename) {
        return "xycj/" + originalFilename;
    }
    /**
     * 根據(jù)文件路徑獲取文件名稱
     *
     * @param filePath 文件路徑
     * @return 文件名
     */
    public String getFileName(String filePath) {
        String[] split = StringUtils.split(filePath, "/");
        return split[split.length - 1];
    }
    /**
     * 下載文件
     *
     * @param httpServletResponse httpServletResponse
     * @param inputStream         inputStream
     * @param fileName            文件名
     * @throws IOException IOException
     */
    public void downloadFile(HttpServletResponse httpServletResponse, InputStream inputStream, String fileName) throws IOException {
        //設(shè)置響應(yīng)頭信息,告訴前端瀏覽器下載文件
        httpServletResponse.setContentType("application/octet-stream;charset=UTF-8");
        httpServletResponse.setCharacterEncoding("UTF-8");
        httpServletResponse.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
        //獲取輸出流進行寫入數(shù)據(jù)
        OutputStream outputStream = httpServletResponse.getOutputStream();
        // 將輸入流復(fù)制到輸出流
        byte[] buffer = new byte[4096];
        int bytesRead = -1;
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, bytesRead);
        }
        // 關(guān)閉流資源
        inputStream.close();
        outputStream.close();
    }
}

controller層:

這里就演示個上傳吧。

package com.htsdg.controller;
import com.htsdg.utils.MinIOUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
@RestController
public class MinioController {
    @Autowired
    private MinIOUtil minIOUtil;
    /**
     * 通用上傳請求
     */
    @PostMapping("/upload")
    public void uploadFile(MultipartFile file) throws Exception {
        minIOUtil.putObject(file);
        System.out.println("yes");
    }
    @GetMapping("/download")
    public void download(HttpServletResponse response, @RequestParam(value = "filepath") String filepath) throws IOException {
        try {
            minIOUtil.getObject(response, filepath);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            System.out.println("出錯了?。。。?!");
        }
    }
}

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

相關(guān)文章

  • java?面向?qū)ο蟠a塊及不同位置對屬性賦值的執(zhí)行順序

    java?面向?qū)ο蟠a塊及不同位置對屬性賦值的執(zhí)行順序

    這篇文章主要介紹了java面向?qū)ο蟠a塊及不同位置對屬性賦值的執(zhí)行順序,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • 劍指Offer之Java算法習(xí)題精講鏈表與二叉樹專項訓(xùn)練

    劍指Offer之Java算法習(xí)題精講鏈表與二叉樹專項訓(xùn)練

    跟著思路走,之后從簡單題入手,反復(fù)去看,做過之后可能會忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質(zhì)的變化
    2022-03-03
  • springboot日期格式化及時差問題分析

    springboot日期格式化及時差問題分析

    這篇文章主要介紹了springboot日期格式化,時差問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • Java字符流和字節(jié)流對文件操作的區(qū)別

    Java字符流和字節(jié)流對文件操作的區(qū)別

    本篇文章主要介紹了Java的IO流分為字符流(Reader,Writer)和字節(jié)流(InputStream,OutputStream),字節(jié)流顧名思義字節(jié)流就是將文件的內(nèi)容讀取到字節(jié)數(shù)組,對初學(xué)者很有用,有需要的朋友可以了解一下。
    2016-10-10
  • Java基于外觀模式實現(xiàn)美食天下食譜功能實例詳解

    Java基于外觀模式實現(xiàn)美食天下食譜功能實例詳解

    這篇文章主要介紹了Java基于外觀模式實現(xiàn)美食天下食譜功能,較為詳細(xì)的講述了外觀模式的概念、原理并結(jié)合實例形似詳細(xì)分析了Java基于外觀模式實現(xiàn)美食天下食譜功能的具體操作步驟與相關(guān)注意事項,需要的朋友可以參考下
    2018-05-05
  • java?List集合去除null的4種方法

    java?List集合去除null的4種方法

    這篇文章主要給大家介紹了java?List集合去除null的3種方法,文中通過代碼示例將每種方法都介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Java具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • 解決SSLContext.getInstance()中參數(shù)設(shè)置TLS版本無效的問題

    解決SSLContext.getInstance()中參數(shù)設(shè)置TLS版本無效的問題

    這篇文章主要介紹了解決SSLContext.getInstance()中參數(shù)設(shè)置TLS版本無效的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • java基于C/S模式實現(xiàn)聊天程序(客戶端)

    java基于C/S模式實現(xiàn)聊天程序(客戶端)

    這篇文章主要為大家詳細(xì)介紹了java基于C/S模式實現(xiàn)聊天程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Springboot整合Gson報錯問題解決過程

    Springboot整合Gson報錯問題解決過程

    這篇文章主要介紹了Springboot整合Gson報錯問題解決過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • mybatis-plus 新增/修改如何實現(xiàn)自動填充指定字段

    mybatis-plus 新增/修改如何實現(xiàn)自動填充指定字段

    這篇文章主要介紹了mybatis-plus 新增/修改實現(xiàn)自動填充指定字段方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評論

铁岭县| 兴业县| 通河县| 育儿| 西林县| 兴城市| 湖北省| 定安县| 高邮市| 鹿邑县| 德安县| 衡水市| 长岛县| 吕梁市| 贞丰县| 镇平县| 迁安市| 射洪县| 乾安县| 新郑市| 朔州市| 阿克| 龙江县| 织金县| 平和县| 太仓市| 长子县| 油尖旺区| 潜山县| 武川县| 宁海县| 那坡县| 布尔津县| 兴化市| 石门县| 成安县| 沁水县| 环江| 从化市| 滨海县| 德钦县|