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

Springboot集成Minio實(shí)現(xiàn)文件上傳基本步驟

 更新時間:2025年06月18日 11:02:27   作者:choice of  
這篇文章主要介紹了Springboot集成Minio實(shí)現(xiàn)文件上傳基本步驟,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧

一 需要用到的有關(guān)Minio的核心概念

  • 存儲桶(Bucket):類似于文件系統(tǒng)中的頂級目錄,需提前創(chuàng)建。
  • 對象(Object):存儲在 MinIO 中的文件,每個對象有唯一的鍵(Key)。
  • 預(yù)簽名 URL:臨時授權(quán)的 URL,可控制訪問權(quán)限和有效期。

二 Springboot集成Minio基本步驟

1 添加相關(guān)依賴

        <dependency>
            <groupId>io.minio</groupId>
            <artifactId>minio</artifactId>
            <version>8.2.1</version>
            <exclusions>
                <exclusion>
                    <groupId>com.squareup.okhttp3</groupId>
                    <artifactId>okhttp</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.jetbrains.kotlin</groupId>
                    <artifactId>kotlin-stdlib</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.9.0</version>
        </dependency>

2 配置Minio的連接信息

在application.yml中添加配置:

yaml
minio:
  endpoint: http://localhost:9000  # MinIO服務(wù)地址
  access-key: your-access-key        # 訪問密鑰
  secret-key: your-secret-key        # 秘密密鑰
  bucket-name: your-bucket-name      # 默認(rèn)存儲桶名稱

3 創(chuàng)建Minio的配置類

import io.minio.MinioClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MinIOConfig {
    @Value("${minio.endpoint}")
    private String endpoint;
    @Value("${minio.access-key}")
    private String accessKey;
    @Value("${minio.secret-key}")
    private String secretKey;
    @Bean
    public MinioClient minioClient() {
        return MinioClient.builder()
                .endpoint(endpoint)
                .credentials(accessKey, secretKey)
                .build();
    }
}

4 (服務(wù)層)創(chuàng)建Minio的服務(wù)類

主要實(shí)現(xiàn)文件上傳,下載操作

public String upload(MultipartFile file) throws Exception {
        // 檢查存儲桶是否存在,不存在則創(chuàng)建
        boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
        if (!isExist) {
            minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
        }
    // 生成唯一文件名,避免中文和空格
        String originalFilename = file.getOriginalFilename();
        String fileName = UUID.randomUUID().toString() + "." +
                originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
        // 1. 上傳文件到MinIO
        minioClient.putObject(
                PutObjectArgs.builder()
                        .bucket(bucketName)
                        .object(fileName)
                        .stream(file.getInputStream(), file.getSize(), -1)
                        .contentType(file.getContentType())
                        .build()
        );
        return  url + "/" + bucketName + "/" + fileName;
    }

5 (表現(xiàn)層)創(chuàng)建控制器

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
@RestController
public class FileUploadController {
    @Autowired
    private MinioServiceImpl minioService;

到此這篇關(guān)于Springboot集成Minio實(shí)現(xiàn)文件上傳的文章就介紹到這了,更多相關(guān)Springboot Minio文件上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實(shí)現(xiàn)多線程下載和斷點(diǎn)續(xù)傳

    Java實(shí)現(xiàn)多線程下載和斷點(diǎn)續(xù)傳

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)多線程下載和斷點(diǎn)續(xù)傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 多模塊的springboot項目發(fā)布指定模塊的腳本方式

    多模塊的springboot項目發(fā)布指定模塊的腳本方式

    該文章主要介紹了如何在多模塊的SpringBoot項目中發(fā)布指定模塊的腳本,作者原先的腳本會清理并編譯所有模塊,導(dǎo)致發(fā)布時間過長,通過簡化腳本,只使用`mvn clean install`命令,可以快速發(fā)布指定模塊及其依賴的模塊
    2025-01-01
  • SpringBoot集成Jpa對數(shù)據(jù)進(jìn)行排序、分頁、條件查詢和過濾操作

    SpringBoot集成Jpa對數(shù)據(jù)進(jìn)行排序、分頁、條件查詢和過濾操作

    這篇文章主要介紹了SpringBoot集成Jpa對數(shù)據(jù)進(jìn)行排序、分頁、條件查詢和過濾操作,主要使用Jpa連接數(shù)據(jù)庫對數(shù)據(jù)進(jìn)行排序、分頁、條件查詢和過濾操作,需要的朋友可以參考下
    2023-05-05
  • Monaco?Editor實(shí)現(xiàn)sql和java代碼提示實(shí)現(xiàn)示例

    Monaco?Editor實(shí)現(xiàn)sql和java代碼提示實(shí)現(xiàn)示例

    這篇文章主要為大家介紹了Monaco?Editor代碼提示sql和java實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • springCloud集成nacos config的過程

    springCloud集成nacos config的過程

    本文介紹spring cloud集成nacos config的過程,通過實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • spring?boot?3使用?elasticsearch?提供搜索建議的實(shí)例詳解

    spring?boot?3使用?elasticsearch?提供搜索建議的實(shí)例詳解

    這篇文章主要介紹了spring?boot3使用elasticsearch提供搜索建議,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • 關(guān)于IDEA使用jsp可以訪問頁面轉(zhuǎn)換為html彈出頁面為404的問題

    關(guān)于IDEA使用jsp可以訪問頁面轉(zhuǎn)換為html彈出頁面為404的問題

    這篇文章主要介紹了關(guān)于IDEA使用jsp可以訪問頁面轉(zhuǎn)換為html彈出頁面為404的問題及解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • 分享5個Java接口性能提升的通用技巧

    分享5個Java接口性能提升的通用技巧

    作為后端開發(fā)人員,我們總是在編寫各種API。這些API在服務(wù)初期可能表現(xiàn)不錯,但隨著用戶數(shù)量的增長,一開始響應(yīng)很快的API越來越慢,這時候你就需要考慮如何優(yōu)化你的API性能了。在這篇文章中,我總結(jié)了一些行之有效的API性能優(yōu)化技巧,希望能給有需要的朋友一些幫助
    2023-01-01
  • Java深入淺出說流的使用

    Java深入淺出說流的使用

    這篇文章主要介紹了Java深入淺出說流的使用,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Java注解@Conditional與@Profile的使用區(qū)別

    Java注解@Conditional與@Profile的使用區(qū)別

    這篇文章主要介紹了Java注解@Conditional與@Profile的使用區(qū)別,@Profile和@Conditional是Spring提供的兩種常用機(jī)制,它們可以根據(jù)不同的條件動態(tài)決定某些Bean是否加載,從而實(shí)現(xiàn)環(huán)境隔離、模塊選擇、特性開關(guān)等功能,需要的朋友可以參考下
    2025-05-05

最新評論