首页 > 其他分享 >Go使用minio

Go使用minio

时间:2023-11-07 17:36:41浏览次数:28  
标签:err minio objectName object 使用 Go minioClient log

package main

import (
	"context"
	"fmt"
	"github.com/minio/minio-go/v7"
	"github.com/minio/minio-go/v7/pkg/credentials"
	"io"
	"log"
	"mime"
	"os"
	"path/filepath"
)

// 在MinIO中,文件和对象是等效的概念。每个文件都是一个对象(文件夹),
// 并由一个唯一的对象名称标识。因此,在MinIO中,删除文件和删除对象是相同的操作
func main() {
	endpoint := "192.168.252.128:9000" // Minio服务器的endpoint
	accessKeyID := "admin"             // Minio服务器的Access Key
	secretAccessKey := "admin123456"   // Minio服务器的Secret Key

	// 初始化Minio客戶端
	minioClient, err := minio.New(endpoint, &minio.Options{
		Creds:  credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
		Secure: false,
	})
	if err != nil {
		log.Fatalln("000", err)
	}

	// 设定上传件的bucket和object名称,以及本地文件路径
	bucketName := "test"
	objectName := "images"
	filePath := "Z:\\hook\\output.xlsx"
	if exists, err := minioClient.BucketExists(context.Background(), bucketName); !exists {
		err = minioClient.MakeBucket(context.Background(), bucketName, minio.MakeBucketOptions{Region: "us-east-1"})
		if err != nil {
			log.Fatalln("001", err)
		}
	}

	// 打开本地文件并获取文件信息
	fileType := mime.TypeByExtension(filepath.Ext(filePath))
	fmt.Println(fileType)
	//上传文件
	uploadObject(minioClient, bucketName, objectName, filePath, fileType)
	//下载文件
	//downObject(minioClient, bucketName, objectName, filePath)
	//删除文件
	//removeObject(minioClient, bucketName, objectName)

}

// 上传对象
func uploadObject(minioClient *minio.Client, bulkName, objectName, localFileName, fileType string) {
	_, err := minioClient.FPutObject(context.Background(), bulkName, objectName, localFileName, minio.PutObjectOptions{
		ContentType: fileType,
	})
	if err != nil {
		log.Fatalf("upload object error " + err.Error())
	}
}

// 下载对象
func downObject(minioClient *minio.Client, bulkName, objectName, localFileName string) {
	object, err := minioClient.GetObject(context.Background(), bulkName, objectName, minio.GetObjectOptions{})
	if err != nil {
		log.Fatalf("download object error " + err.Error())
		return
	}
	localFile, err := os.Create(localFileName)
	if err != nil {
		log.Fatalf("create local object error " + err.Error())
	}
	_, err = io.Copy(localFile, object)
	if err != nil {
		log.Fatalf("write object from object to local file error " + err.Error())
		return
	}
}

// 删除对象
func removeObject(minioClient *minio.Client, bulkName, objectName string) {
	err := minioClient.RemoveObject(context.Background(), bulkName, objectName, minio.RemoveObjectOptions{})
	if err != nil {
		log.Fatalf("remove object eror " + err.Error())
		return
	}
}

标签:err,minio,objectName,object,使用,Go,minioClient,log
From: https://www.cnblogs.com/qcy-blog/p/17815465.html

相关文章

  • 使用RTSP接入安防监控EasyCVR平台,如何配置系统参数以减少起播时间?
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台可拓展性强、视频能力灵活,能对外分发RTMP、RTSP、HTTP-......
  • eclipse工具使用
    eclipse下载官网下载:https://www.eclipse.org/downloads/packages/打开后,找到EclipseIDEforJavaDevelopers点击进入进入后点击右侧电脑适配的版本,进入到下载界面点击“>>SelectAnotherMirror”选项点击China-BeijingInstituteofTechnology等待弹出下载窗口进行下......
  • 搜索文档树、bs4其他用法、css选择器、selenium基本使用、selenium其他用法
    搜索文档树#1find_all:找所有列表#2find找一个Tag类的对象find和find_allfrombs4importBeautifulSouphtml_doc="""<html><head><title>TheDormouse'sstory</title></head><body><pclass="title&......
  • RocketMQ 使用注意事项
    场景:最近公司项目要用RocketMQ,但是之前我没用过。所以在使用过程中遇到一些问题,做个记录。这篇主要是将注意事项,不涉及底层实现原理(还没学透)。而且这里用的RocketMQ是指Apache的4.X,不是阿里云的,注意两者的不同。解决:1.保持订阅关系一致:订阅关系一致指的是同一消......
  • Golang简单使用wasm
    go代码packagemainimport( "syscall/js")funcaddxxxx(thisjs.Value,args[]js.Value)interface{}{ iflen(args)!=2{ return"Invalidnumberofarguments.Expected2." } num1:=args[0].Float() num2:=args[1].Float() res......
  • 使用RTSP接入安防监控EasyCVR平台,如何配置系统参数以减少起播时间?
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台可拓展性强、视频能力灵活,能对外分发RTMP、RTSP、HTTP-F......
  • Go-zero对接dtm
    go-zero对接分布式事务dtm保姆式教程一、首先需要注意go-zero1.2.4版本以上,这个一定要注意dtm你用最新的就行了二、clonedtmgitclonehttps://github.com/yedf/dtm.git三、配置文件1、找到项目跟文件夹下的conf.sample.yml2、cpconf.sample.ymlconf.yml3、使用e......
  • NProgress 使用
    简单使用案例一一、安装NProgress包方法一:npminstall--savenprogerss方法二:yarnaddnprogress方法三:在图形化界面中搜索nprogress安装运行依赖方法四:直接引入js、css或者通过cdn引入。<scriptsrc='nprogress.js'></script><linkrel='stylesheet'href='nprogress.css�......
  • vue中使用Loading这个加载工具
    在src/theme文件夹中建立loading.scss文件,内容如下:.loading-next{ width:100%; height:100%;}.loading-next.loading-next-box{ position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);}.loading-next.loading-next-box-warp{ width:80px......
  • 安防监控EasyCVR视频汇聚平台使用海康SDK播放时,画面播放缓慢该如何解决?
    视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音......