不要钱做网站软件有域名了怎么做网站
不要钱做网站软件,有域名了怎么做网站,typecho wordpress,最新新闻事件今天地震文章目录客户端初始化创建bucket查看bucket列表上传文件下载文件生命周期复制文件删除文件API参考客户端
minio官方提供了简单的Go Client SDK客户端#xff0c;目前最新版本是v7
地址: https://github.com/minio/minio-go
初始化
MinIO client需要以下4个参数来连接与S3兼…文章目录客户端初始化创建bucket查看bucket列表上传文件下载文件生命周期复制文件删除文件API参考客户端minio官方提供了简单的Go Client SDK客户端目前最新版本是v7地址: https://github.com/minio/minio-go初始化MinIO client需要以下4个参数来连接与S3兼容的对象存储。将4个配置项声明为常量不允许更改将client设置全局变量方便多个函数使用然后使用init函数在启动项目执行这里我们不使用https,将userSSl设置为falseconst(endpoint stringip:9000accessKeyID stringminioadminsecretAccessKeystringminioadminuseSSL boolfalse)var(client *minio.Client err error)funcinit(){client, err :minio.New(endpoint,minio.Options{Creds: credentials.NewStaticV4(accessKeyID, secretAccessKey,), Secure: useSSL})iferr!nil{log.Fatalln(minio连接错误: ,err)}log.Printf(%#v\n, client)}创建bucket对于bucket相关的api有如下几个调用了MakeBucket创建桶调用BucketExists判断桶是否已存在其它还有查看桶列表删除桶等apifunccreateBucket(){bucketName :mymusicerrclient.MakeBucket(ctx, bucketName, minio.MakeBucketOptions{Region:cn-south-1,ObjectLocking: false})iferr!nil{log.Println(创建bucket错误: ,err)exists, _ :client.BucketExists(ctx, bucketName)ifexists{log.Printf(bucket: %s已经存在,bucketName)}}else{log.Printf(Successfully created %s\n, bucketName)}}查看bucket列表调用ListBuckets方法获取一个结果循环遍历出来funclistBucket(){buckets, _ :client.ListBuckets(ctx)for_,bucket :range buckets{fmt.Println(bucket)}}上传文件调用FPutObject方法上传一个文件其中ContentType可以设置为application/octet-stream也可以设置为binary/octet-stream,因为是个文本文件我们这里设置的text,如果是压缩文件设置为zip等funcFileUploader(){bucketName :mymusicobjectName :audit.logfilePath :./audit.logcontextType :application/textobject, err :client.FPutObject(ctx, bucketName, objectName, filePath, minio.PutObjectOptions{ContentType: contextType})iferr!nil{log.Println(上传失败,err)}log.Printf(Successfully uploaded %s of size %d\n, objectName, object.Size)}下载文件调用FGetObject方法下载文件到本地并将文件和路径 设定为./audit2.logfuncFileGet(){bucketName :mymusicobjectName :audit.logfilePath :./audit2.logerrclient.FGetObject(ctx, bucketName, objectName, filePath, minio.GetObjectOptions{})iferr!nil{log.Println(下载错误: ,err)}}生命周期lifecycleSet函数为设置mymusic这个桶的生命周期为一年到期自动删除lifecycleGet函数为获取mymusic这个桶的生命周期信息并另外为json文件到本地funclifecycleSet(){config :lifecycle.NewConfiguration()config.Rules[]lifecycle.Rule{{ID:expire-bucket, Status:Enabled, Expiration: lifecycle.Expiration{Days:365,},},}_client.SetBucketLifecycle(ctx,mymusic, config)}funclifecycleGet(){lifecycle, _ :client.GetBucketLifecycle(ctx,mymusic)localLifecycleFile, _ :os.Create(lifecycle.json)defer localLifecycleFile.Close()encoder :xml.NewEncoder(localLifecycleFile)encoder.Indent( , )encoder.Encode(lifecycle)}复制文件文件在bucket之间来回复制,调用CopyObject实现funcFileCopy(){src :minio.CopySrcOptions{Bucket:test2, Object:messages, MatchModifiedSince: time.Date(2014,time.April,0,0,0,0,0, time.UTC),}dst :minio.CopyDestOptions{Bucket:mymusic, Object:messages,}object, _ :client.CopyObject(ctx, dst, src)log.Printf(Copied %s, successfully to %s - UploadInfo %v\n, dst, src, object)}删除文件删除单个文件比较简单调用RemoveObject方法传入桶名和文件名就可以了批量删除的话需要将前缀为test的全部查出来然后通过 通道的方式传递给RemoveObjects方法funcFilesDelete(){bucketName:mymusicobjectName:audit.log//删除一个文件_client.RemoveObject(ctx,bucketName,objectName,minio.RemoveObjectOptions{GovernanceBypass:true})//批量删除文件objectsCh:make(chanminio.ObjectInfo)gofunc(){deferclose(objectsCh)options:minio.ListObjectsOptions{Prefix:test,Recursive:true}forobject:rangeclient.ListObjects(ctx,bucketName,options){ifobject.Err!nil{log.Println(object.Err)}objectsCh-object}}()client.RemoveObjects(ctx,objectName,objectsCh,minio.RemoveObjectsOptions{})}API参考之后我会持续更新如果喜欢我的文章请记得一键三连哦点赞关注收藏你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 ↖(▔▽▔)↗感谢支持