释放双眼,带上耳机,听听看~!
# 分布式对象存储 MinIO Sdk 的使用
本文介绍开源的分布式对象存储 MinIO Sdk 的使用。对象存储系统相比于传统的 NAS 文件系统有很多的优势,访问效率高、方便扩容,支持分布式等特性。MinIO 基于 Goland 开发,所以部署非常方便。
MinIO 服务的搭建步骤请前往搭建分布式对象存储服务 MinIO-单点模式
注意:
官方的中文文档内容更新不及时,导致演示代码错误,请切换为英文官网。
# 1. Golang sdk
# 1.1 demo 代码
package test
import (
"context"
"github.com/minio/minio-go/v7/pkg/credentials"
"log"
"testing"
"github.com/minio/minio-go/v7"
)
/**
@author 王世彪
个人博客: https://sofineday.com?from=apiproject
微信: 645102170
QQ: 645102170
*/
/**
测试MinIO对象存储服务的sdk
*/
func TestMinIO(t *testing.T) {
ctx := context.Background()
endpoint := "172.18.100.177:9000"
accessKeyID := "minioadmin"
secretAccessKey := "minioadmin"
useSSL := false
// Initialize minio client object.
minioClient, err := minio.New(endpoint, &minio.Options{
Creds: credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
Secure: useSSL,
})
if err != nil {
log.Fatalln(err)
}
// Make a new bucket called mymusic.
bucketName := "mymusic"
location := "us-east-1"
err = minioClient.MakeBucket(ctx, bucketName, minio.MakeBucketOptions{Region: location})
if err != nil {
// Check to see if we already own this bucket (which happens if you run this twice)
exists, errBucketExists := minioClient.BucketExists(ctx, bucketName)
if errBucketExists == nil && exists {
log.Printf("We already own %sn", bucketName)
} else {
log.Fatalln(err)
}
} else {
log.Printf("Successfully created %sn", bucketName)
}
// Upload the zip file
objectName := "百事可乐的视频1"
filePath := "/home/wangshibiao/test/百事可乐创意广告恶搞伦敦路人.mp4"
contentType := "video/mpeg4"
// Upload the zip file with FPutObject
n, err := minioClient.FPutObject(ctx, bucketName, objectName, filePath, minio.PutObjectOptions{ContentType: contentType})
if err != nil {
log.Fatalln(err)
}
log.Println(n)
log.Printf("Successfully uploaded %sn", objectName)
}
# 1.2 效果
-
通过后台管理查看
-
通过客户端 mc 查看
/ # mc ls minio/mymusic
[2020-10-30 02:23:28 UTC] 14MiB 百事可乐的视频1
/ #
文章来源于互联网:
分布式对象存储MinIO Sdk的使用