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

SpringBoot整合minio,文件的上傳下載,批量獲取

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot整合minio,文件的上傳下載,批量獲取。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Minio是GlusterFS創(chuàng)始人之一Anand Babu Periasamy發(fā)布新的開源項(xiàng)目?;贏pache License v2.0開源協(xié)議的對象存儲項(xiàng)目,采用Golang實(shí)現(xiàn),客戶端支Java,Python,Javacript, Golang語言。

其設(shè)計(jì)的主要目標(biāo)是作為私有云對象存儲的標(biāo)準(zhǔn)方案。主要用于存儲海量的圖片,視頻,文檔等。非常適合于存儲大容量非結(jié)構(gòu)化的數(shù)據(jù),例如圖片、視頻、日志文件、備份數(shù)據(jù)和容器/虛擬機(jī)鏡像等,而一個(gè)對象文件可以是任意大小,從幾kb到最大5T不等。

minio的服務(wù)部署這里就不敘述了。

1.pom.xml中引用minio的依賴

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

2.application.yml配置文件中配置minio的信息

minio:
  accessKey: ********
  secretKey: **********
  bucketName: yanliang
  endPoint: http://127.0.0.1:9000  #換成自己的minio服務(wù)器地址
  url: http://127.0.0.1:9000
  #文件的過期時(shí)間(分鐘)
  expires: 5

3.寫一個(gè)minio的工具類UploadMinioUtil

package com.yunmao.yanliang.util;

import io.minio.MinioClient;
import io.minio.ObjectStat;
import io.minio.Result;
import io.minio.errors.MinioException;
import io.minio.messages.Item;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;
import java.net.URL;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.List;

/**
 * minio工具類
 * @author 言涼
 */
@Component
public class UploadMinioUtil {
    @Value("${minio.accessKey}")
    private String accessKey;
    @Value("${minio.secretKey}")
    private String secretKey;
    @Value("${minio.bucketName}")
    private String bucketName;
    @Value("${minio.endPoint}")
    private String endPoint;
    @Value("${minio.url}")
    private String url;
    @Value("${minio.expires}")
    private int expires;

    /**
     * 上傳文件至Minio文件系統(tǒng)
     *
     * @param objectName 存在Minio系統(tǒng)中的路徑
     * @param filePath   上傳文件的路徑
     * @return
     * @throws NoSuchAlgorithmException
     * @throws IOException
     * @throws InvalidKeyException
     * @throws XmlPullParserException
     */
    public String uploadFileMinio(String objectName, String filePath) throws NoSuchAlgorithmException, IOException, InvalidKeyException, XmlPullParserException {
        String fileUrl = "";
        try {
            // 使用Minio服務(wù)的URL,端口,Access key和Secret key創(chuàng)建一個(gè)MinioClient對象
            MinioClient minioClient = new MinioClient(endPoint, accessKey, secretKey);

            // 檢查存儲桶是否已經(jīng)存在
            boolean isExist = minioClient.bucketExists(bucketName);
            if (isExist) {
                System.out.println("Bucket already exists.");
            } else {
                // 創(chuàng)建一個(gè)名為asiatrip的存儲桶,用于存儲照片的zip文件。
                minioClient.makeBucket(bucketName);
            }
            // 使用putObject上傳一個(gè)文件到存儲桶中。
            minioClient.putObject(bucketName, objectName, filePath);
            // 返回對象名
            fileUrl = objectName;
        } catch (MinioException e) {
            e.printStackTrace();
        }

        return fileUrl;
    }

    /**
     * 查詢Minio文件系統(tǒng)中文件的url
     *
     * @param objectName 文件路徑
     * @return
     * @throws NoSuchAlgorithmException
     * @throws IOException
     * @throws InvalidKeyException
     * @throws XmlPullParserException
     * @throws MinioException
     */
    public String getFileMinio(String objectName) throws NoSuchAlgorithmException, IOException, InvalidKeyException, XmlPullParserException, MinioException {
        String newFileUrl = "";
        try {
            // 使用Minio服務(wù)的URL,端口,Access key和Secret key創(chuàng)建一個(gè)MinioClient對象
            MinioClient minioClient = new MinioClient(endPoint, accessKey, secretKey);

            // 使用putObject上傳一個(gè)文件到存儲桶中。
            String fileUrl = minioClient.presignedGetObject(bucketName, objectName, 60 * expires);
            URL u = new URL(fileUrl);
            String file = u.getFile();
            newFileUrl = url + file;
        } catch (MinioException e) {
            e.printStackTrace();
        }
        return newFileUrl;
    }

    /**
     * 查詢Minio文件系統(tǒng)中文件是否存在
     *
     * @param objectName
     * @return
     * @throws NoSuchAlgorithmException
     * @throws IOException
     * @throws InvalidKeyException
     * @throws XmlPullParserException
     * @throws MinioException
     */
    public Boolean statFileMinio(String objectName) throws NoSuchAlgorithmException, IOException, InvalidKeyException, XmlPullParserException, MinioException {
        Boolean isExist = false;
        try {
            // 使用Minio服務(wù)的URL,端口,Access key和Secret key創(chuàng)建一個(gè)MinioClient對象
            MinioClient minioClient = new MinioClient(endPoint, accessKey, secretKey);
            // 獲得對象的元數(shù)據(jù)。
            ObjectStat objectStat = minioClient.statObject(bucketName, objectName);
            isExist = true;
        } catch (MinioException e) {
            e.printStackTrace();
            isExist = false;
        }

        return isExist;
    }

    /**
     * 刪除Minio文件系統(tǒng)中的文件
     *
     * @param objectName 文件路徑
     * @throws NoSuchAlgorithmException
     * @throws IOException
     * @throws InvalidKeyException
     * @throws XmlPullParserException
     * @throws MinioException
     */
    public void deleteFileMinio(String objectName) throws NoSuchAlgorithmException, IOException, InvalidKeyException, XmlPullParserException, MinioException {
        try {
            // 使用Minio服務(wù)的URL,端口,Access key和Secret key創(chuàng)建一個(gè)MinioClient對象
            MinioClient minioClient = new MinioClient(endPoint, accessKey, secretKey);

            // 從mybucket中刪除myobject。
            minioClient.removeObject(bucketName, objectName);

        } catch (MinioException e) {
            e.printStackTrace();
        }
    }
    /**
     * 批量獲取minio文件夾下的所有文件
     *
     * @param objectName 文件路徑
     * @return
     * @throws NoSuchAlgorithmException
     * @throws IOException
     * @throws InvalidKeyException
     * @throws XmlPullParserException
     * @throws MinioException
     */
    public List<String> getFileListMinio(String objectName) throws NoSuchAlgorithmException, IOException, InvalidKeyException, XmlPullParserException, MinioException {
        Iterable<Result<Item>> files = null;
        List<String> list = new ArrayList<>();
        try {
            // 使用Minio服務(wù)的URL,端口,Access key和Secret key創(chuàng)建一個(gè)MinioClient對象
            MinioClient minioClient = new MinioClient(endPoint, accessKey, secretKey);

            // 使用putObject上傳一個(gè)文件到存儲桶中。
            files = minioClient.listObjects(bucketName,objectName);
            for(Result<Item> result: files){
                String objName=result.get().objectName();
                String fileurl = this.getFileMinio(objName);
                list.add(fileurl);
            }

        } catch (MinioException e) {
            e.printStackTrace();
        }
        return list;
    }
}

4.實(shí)現(xiàn),在需要對接minio的地方先注入minio工具類

@Autowired
private UploadMinioUtil uploadMinioUtil;

實(shí)現(xiàn)用uploadMinioUtil.方法實(shí)現(xiàn)文件的上傳,下載,刪除,批量獲取等操作

說明:方法中的objectName值為文件在minio系統(tǒng)中的路徑文章來源地址http://www.zghlxwxcb.cn/news/detail-653272.html

到了這里,關(guān)于SpringBoot整合minio,文件的上傳下載,批量獲取的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SpringBoot+MinIO 實(shí)現(xiàn)文件上傳、讀取、下載、刪除

    一、 MinIO 二、 MinIO安裝和啟動(dòng) 三、 pom.xml 四、 applicatin.properties(配置文件) 五、 編寫Java業(yè)務(wù)類

    2024年02月09日
    瀏覽(44)
  • SpringBoot整合Hutool實(shí)現(xiàn)文件上傳下載

    我相信我們在日常開發(fā)中,難免會遇到對各種媒體文件的操作,由于業(yè)務(wù)需求的不同對文件操作的代碼實(shí)現(xiàn)也大不相同 maven配置 文件類 文件接口? 配置靜態(tài)資源映射

    2024年02月02日
    瀏覽(27)
  • 【分布式文件存儲】MinIO部署及實(shí)現(xiàn)文件上傳下載

    【分布式文件存儲】MinIO部署及實(shí)現(xiàn)文件上傳下載

    目錄 概述 MinIO集群部署 準(zhǔn)備docker-compose.yml 測試啟動(dòng) MinIO用戶管理 Buckets管理 ?創(chuàng)建Buckets MinIO客戶端 引入依賴? ?文件上傳下載Demo 調(diào)用API碰到的問題 MinIO | 高性能, Kubernetes 原生對象存儲 MinIO是全球領(lǐng)先的對象存儲先鋒,目前在全世界有數(shù)百萬的用戶。 高性能 ,在標(biāo)準(zhǔn)硬件

    2024年02月07日
    瀏覽(30)
  • 【minio】Ubuntu安裝MinIO文件服務(wù)器并通過C++上傳下載

    【minio】Ubuntu安裝MinIO文件服務(wù)器并通過C++上傳下載

    ?? ★,° :.☆( ̄▽ ̄)/$: .°★ ?? 這篇文章主要介紹MinIO的使用。 學(xué)其所用,用其所學(xué)?!簡⒊?歡迎來到我的博客,一起學(xué)習(xí)知識,共同進(jìn)步。 喜歡的朋友可以關(guān)注一下,下次更新不迷路?? MinIO是一種高性能、可擴(kuò)展的 對象存儲服務(wù) ,它可以在私有云、公共云和邊緣計(jì)

    2024年02月08日
    瀏覽(32)
  • Java實(shí)現(xiàn)minio上傳、下載、刪除文件,支持https訪問

    Java實(shí)現(xiàn)minio上傳、下載、刪除文件,支持https訪問

    MinIO 是一款高性能、分布式的對象存儲系統(tǒng),Minio是基于Go語言編寫的對象存儲服務(wù),適合于存儲大容量非結(jié)構(gòu)化的數(shù)據(jù),例如圖片、音頻、視頻、備份數(shù)據(jù)等 , 傳統(tǒng)對象存儲用例(例如輔助存儲,災(zāi)難恢復(fù)和歸檔)方面表現(xiàn)出色。 導(dǎo)入minio依賴包 application.yml配置文件 配置

    2024年02月05日
    瀏覽(27)
  • minio-docker單節(jié)點(diǎn)部署SDK測試文件上傳下載

    minio-docker單節(jié)點(diǎn)部署SDK測試文件上傳下載

    目錄 一,docker部署minio單節(jié)點(diǎn)單磁盤 二,SDK測試上傳下載 1.拉取鏡像 2.查看鏡像 3.啟動(dòng)minio(新版本) 創(chuàng)建本機(jī)上的掛載目錄,這個(gè)可以自己指定。 -d --restart=always是容器自啟動(dòng),建議不要帶。 增加這行參數(shù),執(zhí)行docker stop的時(shí)候不管用,他會立馬又自己啟動(dòng)起來,只能強(qiáng)制刪

    2024年04月28日
    瀏覽(19)
  • minio + linux + docker + spring boot實(shí)現(xiàn)文件上傳與下載

    minio + linux + docker + spring boot實(shí)現(xiàn)文件上傳與下載

    檢查linux內(nèi)核,必須是3.10以上 安裝docker 啟動(dòng)docker 搜索鏡像 拉取鏡像 啟動(dòng)minio -p: 指定端口映射,格式為:主機(jī)端口:容器端口 (這里注意要映射兩個(gè),否則API會訪問不到) -e “MINIO_ROOT_USER=vinci” minio用戶名; -e MINIO_SECRET_KEY=123456 minio 密碼 -d: 后臺運(yùn)行容器,并返回容器ID; -

    2024年02月07日
    瀏覽(28)
  • MINIO服務(wù)器基于AWS S3 SDK 文件分片上傳及下載(C++實(shí)現(xiàn))

    MINIO服務(wù)器基于AWS S3 SDK 文件分片上傳及下載(C++實(shí)現(xiàn))

    安裝環(huán)境依賴: 獲取SDK源碼并安裝: 項(xiàng)目中CMakeLists.txt配置: SDK文檔資料 C++_SDK.pdf 實(shí)現(xiàn)下載的整體類代碼下載 具體內(nèi)容如下

    2024年04月10日
    瀏覽(51)
  • SpringBoot+vue文件上傳&下載&預(yù)覽&大文件分片上傳&文件上傳進(jìn)度

    SpringBoot+vue文件上傳&下載&預(yù)覽&大文件分片上傳&文件上傳進(jìn)度

    SpringBoot+vue 大文件分片下載 Blob File spark-md5根據(jù)文件內(nèi)容生成hash 大文件分片上傳(批量并發(fā),手動(dòng)上傳)vue組件封裝-form組件 vue上傳大文件/視頻前后端(java)代碼 springboot+vue自定義上傳圖片及視頻 SpringBoot + VUE實(shí)現(xiàn)前臺上傳文件獲取實(shí)時(shí)進(jìn)度( 使用commons-fileupload設(shè)置上傳監(jiān)聽

    2024年02月05日
    瀏覽(68)
  • SpringBoot 如何實(shí)現(xiàn)文件上傳和下載

    SpringBoot 如何實(shí)現(xiàn)文件上傳和下載

    當(dāng)今Web應(yīng)用程序通常需要支持文件上傳和下載功能,Spring Boot提供了簡單且易于使用的方式來實(shí)現(xiàn)這些功能。在本篇文章中,我們將介紹Spring Boot如何實(shí)現(xiàn)文件上傳和下載,同時(shí)提供相應(yīng)的代碼示例。 Spring Boot提供了Multipart文件上傳的支持。Multipart是HTTP協(xié)議中的一種方式,用

    2024年02月15日
    瀏覽(39)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包