MinIO Go 客戶端使用詳解:對象存儲開發實戰指南

MinIO GO-SDK

    • ? 一、準備工作
      • 1. 環境依賴
      • 2. 安裝 SDK
    • ?? 二、初始化 MinIO 客戶端
    • ?? 三、創建 Bucket(存儲桶)
    • ?? 四、上傳對象
    • ?? 五、下載對象
    • ?? 六、列出對象列表
    • ??? 七、刪除對象
    • ?? 八、總結
      • ?? 推薦閱讀:

隨著云原生架構的發展,對象存儲已成為現代數據存儲的主流方式。MinIO 作為一款高性能、兼容 S3 協議的對象存儲服務,因其部署靈活、開源透明等特性,在私有云和本地部署場景中得到了廣泛應用。

本文將詳細介紹如何使用 MinIO 的 Go 語言客戶端(minio-go),實現對象的上傳、下載、瀏覽與刪除操作。內容覆蓋實際開發常用操作,適合希望通過 Go 操作對象存儲的工程師。


? 一、準備工作

1. 環境依賴

  • Go 版本:建議 Go 1.16+
  • MinIO 已部署并運行(本地或遠程皆可)
  • 獲取 AccessKey 和 SecretKey

2. 安裝 SDK

go get github.com/minio/minio-go/v7
go get github.com/minio/minio-go/v7/pkg/credentials

?? 二、初始化 MinIO 客戶端

import (
"bytes"
"context"
"fmt"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
"io"
"log"
"log/slog"
"time"
)func main() {client := initMinioClient()
}// initMinioClient 初始化minio客戶端
func initMinioClient() *minio.Client {endpoint := "127.0.0.1:9000"accessKeyID := "minioadmin"secretAccessKey := "minioadmin"useSSL := falseclient, err := minio.New(endpoint, &minio.Options{Creds:  credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),Secure: useSSL,})if err != nil {log.Fatalln("初始minio客戶端失敗", err)}return client
}

?? 三、創建 Bucket(存儲桶)

// createBucket 如果bucket不存在則創建
func createBucket(client *minio.Client, bucketName string) {exists, errBucketExists := client.BucketExists(context.Background(), bucketName)if errBucketExists != nil {slog.Info("檢查bucket是否存在失敗", errBucketExists)return}if !exists {err := client.MakeBucket(context.Background(), bucketName, minio.MakeBucketOptions{})if err != nil {slog.Info("創建桶失敗!", err)} else {slog.Info("創建桶成功!")}}
}

?? 四、上傳對象

// PutObject 上傳文件到minio,這里直接使用byte[]

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92713.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92713.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92713.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux-process

Linux進程概念 1. 進程概念 1.1 理解馮諾依曼體系解構 馮諾依曼體系解構五大核心: 運算器:負責算數運算(加減乘除)和邏輯運算(與或非)。 控制器:從內存中讀取指令,并協調其他部件…

《西蒙學習法》核心思想的感悟與思考

以下是對《西蒙學習法》核心思想的感悟與思考,結合書中要點提煉為可實踐的學習哲學:一、破除學習迷思:從“記憶量”到“認知升級”學習≠記憶 大腦不是硬盤,知識存儲無限但時間有限。真正的學習是建立“解決問題的程序”&#xff…

互聯網隱私的未來:Web3、區塊鏈與神秘法寶

隨著互聯網技術的飛速發展,用戶隱私保護成為了一個全球性的話題。Web3和區塊鏈技術的出現,為互聯網隱私的未來提供了新的可能性。本文將探討這些技術如何塑造隱私保護的新格局,并介紹一些神秘的法寶,它們在保護用戶隱私方面發揮著…

Go進階高并發(多線程)處理教程

Go進階高并發處理教程 目錄 Go并發編程基礎Goroutine深入理解同步原語詳解并發模式與最佳實踐性能優化技巧實戰案例 Go并發編程基礎 什么是并發? 并發是指程序能夠同時處理多個任務的能力。Go語言從設計之初就將并發作為核心特性,提供了簡潔而強大的…

一種基于單片機控制的太陽能電池板系統設計

摘 要: 設計的太陽能電池板系統,以單片機單元為核心,集檢測、光能跟蹤、板面清潔、輸出控制為一體,解決了傳統太陽能板控制功能簡單、效率低的技術問題,達到了自動監測輸出電能、自動清洗板面、全方位跟蹤光伏發電最大效率點的技術…

前端實現類瀏覽器的 Ctrl+F 全局搜索功能(Vue2 + mark.js,用于Electron 、QT等沒有瀏覽器Ctrl+F全局搜索功能的殼子中)

💻 在 Electron 中實現類瀏覽器的 CtrlF 全局搜索功能(Vue2 mark.js)本文介紹如何在 Electron 應用中構建一個像 Chrome 一樣的 CtrlF 查找框,支持全局高亮、滾動定位、關鍵詞計數與上下跳轉。? 背景 在網頁瀏覽器中&#xff0c…

詳解力扣高頻 SQL 50 題-1757.可回收且低脂的產品【入門】

傳送門:可回收且低脂的產品 題目 表:Products -------------------- | Column Name | Type | -------------------- | product_id | int | | low_fats | enum | | recyclable | enum | -------------------- product_id 是該表的主鍵(具有…

CSS3 網格元素

CSS3 網格元素(Grid Items)是網格容器(Grid Container)的直接子元素,它們參與 CSS 網格布局,并根據網格容器的規則在網格中定位和排列。以下是對網格元素的詳細中文講解,涵蓋定義、相關屬性、用…

30天打牢數模基礎-決策樹講解

案例代碼一、代碼說明本代碼針對員工離職預測問題,使用CART決策樹算法(基尼指數)實現分類,并包含特征重要性評估和樹結構可視化。數據為模擬的10個員工樣本,特征包括工作年限、月薪、是否加班、團隊氛圍評分&#xff0…

React與jQuery全棧實戰指南

以下是為React工程師優化的jQuery全棧指南,結合Thymeleaf項目需求與React思維模式,整合核心概念、避坑策略及實戰技巧。內容依據官方文檔與多篇技術文章優化補充,保留原有框架并深化關鍵細節: ?一、jQuery核心設計哲學 vs React?…

Redis分布式鎖的學習(八)

一、分布式鎖 1.1、分布式鎖是什么? 是一種在分布式系統中協調多個進程/服務對共享資源進行互斥訪問的機制;確保在任意時刻,只有一個客戶端可以訪問資源。 1.2、為什么需要分布式鎖? 解決多個服務/進程對同共享資源競爭&…

spring的常用注解匯總

在 Spring 和 Spring Boot 框架中,有許多核心注解被廣泛應用。以下是常用的關鍵注解分類詳解:一、組件聲明與依賴注入注解作用示例Component通用組件聲明 (Bean 的泛化形式)Component public class ServiceImpl {...}Service標記服務層(業務邏…

Claude4、GPT4、Kimi K2、Gemini2.5、DeepSeek R1、Code Llama等2025主流AI編程大模型多維度對比分析報告

2025主流AI編程大模型多維度對比分析報告引言:AI編程大模型的技術格局與選型挑戰一、核心模型概覽:技術定位與市場份額1.國際第一梯隊(1)Claude 4系列(Anthropic)(2)GPT-4.1&#xf…

Overleaf中下載.aux和.bbl文件

有些會議提交終稿的時候,可能會讓上傳.bbl和.aux文件,但是使用Overleaf下載下來的壓縮包中缺沒有這些文件在網上搜了一下都是用的舊版的Overleaf的教程,或者教程比較繁瑣,其實新版的Overleaf也可以直接下載 打開你的論文編譯好&am…

uniapp寫app做測試手機通知欄展示內容

uniapp寫app做測試手機通知欄展示內容 以下代碼:只是個簡單測試能不能給手機發送消息,能不能引導打開通知權限,能不能進行跳轉的功能, 增加 notify.js 以下文件 // 模擬本地通知功能 export function showNotification() {// 1. 檢查通知…

分布式云計算:未來計算架構的全新演進

隨著信息技術的不斷發展,尤其是云計算技術的飛速進步,企業和個人對計算資源的需求已經從傳統的單一數據中心向更為靈活、可擴展的分布式架構轉變。分布式云計算作為一種新興的云計算模型,旨在將計算資源和數據存儲分布在多個地理位置上,從而提供更加高效、安全和可靠的服務…

2025年海外短劇獨立站開發:H5+PC端雙平臺技術實踐與增長策略

引言在全球化內容消費浪潮下,海外短劇市場正經歷爆發式增長。據DataEye《2025H1海外微短劇行業數據報告》顯示,2025年海外短劇市場規模預計突破45億美元,其中東南亞、拉美等新興市場貢獻超30%增量。本文將以某頭部短劇平臺的雙平臺開發實踐為…

OpenAI發布ChatGPT Agent,AI智能體迎來關鍵變革

注:此文章內容均節選自充電了么創始人,CEO兼CTO陳敬雷老師的新書《GPT多模態大模型與AI Agent智能體》(跟我一起學人工智能)【陳敬雷編著】【清華大學出版社】 清華《GPT多模態大模型與AI Agent智能體》書籍配套視頻課程【陳敬雷…

企業級安全威脅檢測與響應(EDR/XDR)架構設計

在這個網絡威脅如洪水猛獸的時代,企業的安全防護不能再像守城門的老大爺一樣只會喊"什么人?口令!"了。我們需要的是一套像FBI一樣具備全方位偵察能力的智能防護系統。 📋 文章目錄 1. 什么是EDR/XDR?別被這…