Go 使用 MinIO SDK 上传文件

MinIO 是一款开源的分布式对象存储服务,兼容 S3 协议,通过 Go SDK 可以轻松实现文件上传,只需初始化客户端并调用 FPutObject 方法即可完成文件存储,支持自定义 Content-Type 和私有化部署,是替代商业 OSS 的高性价比方案。

今天我们来研究一下minio go上传文件,主要是minio是一款开源的分布式存储服务,遵循S3协议,自己搭建可以省去买OSS的钱

下载minio对应的go sdk

bash
go get github.com/minio/minio-go/v7

初始化go客户端

go
func NewMinioClient(endpoint string, accessKeyID string, secretAccessKey string, useSSL bool) *minio.Client {
	minioClient, err := minio.New(endpoint, &minio.Options{
		Creds:  credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
		Secure: useSSL,
	})
	if err != nil {
		panic(err)
	}
	return minioClient
}

注意一下这个endpoint需要填写Fully Qualified URL, 填写形如cdn.codepzj.cn即可

上传本地文件

go
objectName := "1.txt"      // 上传的文件命名
filePath := "./test/1.txt" // 本地文件路径
uploadFile, err := client.FPutObject(context.Background(), config.Storage.Bucket, objectName, filePath, minio.PutObjectOptions{ContentType: "text/plain; charset=utf-8"})
if err != nil {
	log.Println(err.Error())
	panic("上传失败")
}

这只是一个上传本地文件的简单示例,当然minio还提供了非常多的接口

可以参考一下 https://github.com/minio/minio-go/

完整代码

今天的分享就到这里~

Go Channel 基础概念与用法
Go 使用 Gomail 发送邮件