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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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?别被这…