国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

springboot minio 工具類,一站式解決

這篇具有很好參考價值的文章主要介紹了springboot minio 工具類,一站式解決。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

注意

minio 新版本有9000和9090兩個端口,web訪問是9000,但走api上傳和訪問都是9090端口

引入pom

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

controller文章來源地址http://www.zghlxwxcb.cn/news/detail-809581.html

 @PostMapping("uploadMinio")
    public static String uploadMinio(@RequestParam("file") MultipartFile multipartFile){
        try{
           return MinioUtil.upload(multipartFile);
        }catch (Exception e){
            e.printStackTrace();
            return null;
        }
    }
MinioUtil
import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import io.minio.errors.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.UUID;

public class MinioUtil {

    // 替換為你的MinIO服務器地址、端口、訪問密鑰和秘密密鑰
    private static final String endpoint = "http://localhost:9090";
    private static final String accessKey = "xxx";
    private static final String secretKey = "xxx";
    private static final String bucketName = "xxx";
    private static final String host = "http://localhost:9090/" + bucketName + "/";

    public static String upload(MultipartFile multipartFile) throws IOException {
        InputStream inputStream = null;

        try {
            MinioClient minioClient = MinioClient.builder()
                    .endpoint(endpoint)
                    .credentials(accessKey, secretKey)
                    .build();


            // 獲取文件后綴
            String suffix = getFileExtension(multipartFile.getOriginalFilename());
            if (StringUtils.isBlank(suffix)) {
                return "";
            }

            // 修改 objectName 為正確的文件名 + 后綴
            String objectName = UUID.randomUUID().toString().replaceAll("-", "") + "." + suffix;

            inputStream = convertMultipartFileToInputStream(multipartFile);

            // 檢查存儲桶是否存在,如果不存在則創(chuàng)建
            if (!minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())) {
                minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
            }

            // 上傳文件
            minioClient.putObject(
                    PutObjectArgs.builder()
                            .bucket(bucketName)
                            .object(objectName)
                            .stream(inputStream, multipartFile.getSize(), -1)
                            .contentType("application/octet-stream") // 設置文件類型
                            .build());

            return host + objectName; // 返回上傳后的對象名
        } catch (IOException | XmlParserException | ServerException | NoSuchAlgorithmException |
                InsufficientDataException | InvalidKeyException | InvalidResponseException |
                ErrorResponseException | InternalException e) {
            return null;
        } finally {
            inputStream.close();
        }
    }

    public static String getFileExtension(String filePath) {
        int lastDotIndex = filePath.lastIndexOf(".");
        if (lastDotIndex > 0) {
            return filePath.substring(lastDotIndex + 1);
        }
        return ""; // 如果找不到點或沒有后綴,則返回空字符串
    }

    public static InputStream convertMultipartFileToInputStream(MultipartFile multipartFile) throws IOException {
        return multipartFile.getInputStream();
    }
}

到了這里,關(guān)于springboot minio 工具類,一站式解決的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 先進API生產(chǎn)力工具eqable HTTP,一站式開發(fā)調(diào)試工具推薦

    先進API生產(chǎn)力工具eqable HTTP,一站式開發(fā)調(diào)試工具推薦

    Reqable是什么? Regable = Fiddler/Charles + Postman Reqable是HTTP一站式開發(fā)+調(diào)試國產(chǎn)化解決方案,擁有更便捷的體驗,更先進的協(xié)議,更高效的性能和更精致的界面。 Reqable是一款跨平臺的專業(yè)HTTP開發(fā)和調(diào)試工具,在全平臺支持HTTP1、HTTP2和HTTP3(QUIC)協(xié)議,簡單易用、功能先進、性能高效

    2024年02月11日
    瀏覽(26)
  • 極簡信息管理工具-WorkFlowy,告別工具選擇困難癥,一站式搞定GTD+PKM

    建立思維的秩序,減少思維的混亂度-精神熵: 一切皆大綱,實現(xiàn)結(jié)構(gòu)化思考和漸進式寫作: 為什么說 Workflowy 重塑了我的知識管理 - 知乎 所有大綱都連成一片,讓一切信息從無序到井井有條: 知識連成一片是什么體驗? - 知乎 1. 時間日志 記錄自己每天的各種活動,將自己

    2024年02月07日
    瀏覽(48)
  • ChatGPT4 的體驗 一站式 AI工具箱 -—Poe(使用教程)

    ChatGPT4 的體驗 一站式 AI工具箱 -—Poe(使用教程)

    界面介紹: 是一個基于機器學習的聊天機器人,能夠識別自然語言并做出智能回答。Sage通過自然語言處理和對話管理技術(shù)來實現(xiàn)對話的自然流暢和個性化,同時支持多種語言。Sage較為擅長語言相關(guān)的工作,例如創(chuàng)作文章,做摘要等。 是由開放人工智能(OpenAI)公司開發(fā)的一

    2023年04月22日
    瀏覽(31)
  • ChatGP4 的體驗 一站式 AI工具箱 -—Poe(使用教程)

    ChatGP4 的體驗 一站式 AI工具箱 -—Poe(使用教程)

    界面介紹: 是一個基于機器學習的聊天機器人,能夠識別自然語言并做出智能回答。Sage通過自然語言處理和對話管理技術(shù)來實現(xiàn)對話的自然流暢和個性化,同時支持多種語言。Sage較為擅長語言相關(guān)的工作,例如創(chuàng)作文章,做摘要等。 是由開放人工智能(OpenAI)公司開發(fā)的一

    2024年02月11日
    瀏覽(30)
  • 一站式敏捷研發(fā)協(xié)同平臺,敏捷研發(fā)解決方案

    一站式敏捷研發(fā)協(xié)同平臺,敏捷研發(fā)解決方案

    ?Leangoo領(lǐng)歌是一款 永久免費的專業(yè)的敏捷開發(fā)管理工具 ,提供端到端敏捷研發(fā)管理解決方案,涵蓋敏捷需求管理、任務協(xié)同、進展跟蹤、統(tǒng)計度量等。 Leangoo領(lǐng)歌上手快、實施成本低,可幫助企業(yè)快速落地敏捷,提質(zhì)增效、縮短周期、加速創(chuàng)新。 Leangoo領(lǐng)歌區(qū)別于傳統(tǒng)項目管

    2024年01月24日
    瀏覽(26)
  • 使用屏幕捕捉API:一站式解決屏幕錄制需求

    使用屏幕捕捉API:一站式解決屏幕錄制需求

    隨著科技的發(fā)展,屏幕捕捉API技術(shù)逐漸成為一種熱門的錄屏方法。本文將詳細介紹屏幕捕捉API技術(shù)的原理、應用場景以及如何利用這一技術(shù)為用戶提供便捷、高效的錄屏體驗。 在線錄屏 | 一個覆蓋廣泛主題工具的高效在線平臺(amd794.com) https://amd794.com/recordscreen 一、屏幕捕捉

    2024年01月18日
    瀏覽(24)
  • (1)、擴展SpringCache一站式解決緩存擊穿,穿透,雪崩

    我們在使用SpringCache的@Cacheable注解時,發(fā)現(xiàn)并沒有設置過期時間這個功能。

    2024年02月12日
    瀏覽(17)
  • 一站式Flink&Spark平臺解決方案——StreamX

    隨著 FlinkSpark 生態(tài)的不斷完善,越來越多的企業(yè)選擇這兩款組件,或者其中之一作為離線 實時的大數(shù)據(jù)開發(fā)工具,但是在使用他們進行大數(shù)據(jù)的開發(fā)中我們會遇到一些問題,比如: 任務運行監(jiān)控怎么處理? 使用 Cluster 模式還是 Nodeport 暴露端口訪問 Web UI ? 提交任務能否簡化

    2024年02月13日
    瀏覽(26)
  • 一站式解決方案:Qt 跨平臺開發(fā)靈活可靠

    一站式解決方案:Qt 跨平臺開發(fā)靈活可靠

    一站式解決方案:Qt 跨平臺開發(fā)靈活可靠 Qt 是一種跨平臺開發(fā)工具,為開發(fā)者提供了一站式解決方案。無論您的項目目標是 Windows、Linux、macOS、嵌入式系統(tǒng)還是移動平臺,Qt 都能勝任。這種跨平臺的特性不僅節(jié)省開支,還推動了戰(zhàn)略的快速落地。 適用范圍廣泛:Qt 可在多種

    2024年02月07日
    瀏覽(91)
  • Kyligence Zen 一站式指標平臺體驗——“絕對實力”的指標分析和管理工具——入門體驗評測

    Kyligence Zen 一站式指標平臺體驗——“絕對實力”的指標分析和管理工具——入門體驗評測

    ??歡迎觀閱本本篇文章,我是Sam9029 在知道 Kyligence Zen 之前,我對于該類提供在線化數(shù)據(jù)處理服務的產(chǎn)品了解甚少 腦子里對于數(shù)據(jù)處理的印象依舊在傳統(tǒng)的辦公軟件和專業(yè)領(lǐng)域軟件上 Excel 的大名自不必說, Spss 和 SAS 略有了解,同時作為開發(fā)人員, Echarts 倒是使用頻率更多

    2024年02月04日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包