package main

import (
"context"
"fmt"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
"log"
)

func main() {
endpoint := "127.0.0.1:9000"
accessKeyID := "minioadmin"
secretAccessKey := "minioadmin"
useSSL := false
ctx := context.Background()
// Initialize minio client object.
minioClient, err := minio.New(endpoint, &minio.Options{
Creds: credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
Secure: useSSL,
})
if err != nil {
log.Fatalln(err)
}

//log.Printf("%#v\n", minioClient) // minioClient is now setup
//// Create a bucket at region 'us-east-1' with object locking enabled.
//err = minioClient.MakeBucket(ctx, "gwx",minio.MakeBucketOptions{})
//if err != nil {
// fmt.Println("******************",err)
// return
//}
//fmt.Println("Successfully created mybucket.")

//buckets, err := minioClient.ListBuckets(ctx)
//if err != nil {
// fmt.Println(err)
// return
//}
//for _, bucket := range buckets {
// fmt.Println(bucket)
//}

ctx, cancel := context.WithCancel(context.Background())

defer cancel()

objectCh := minioClient.ListObjects(ctx, "test", minio.ListObjectsOptions{
Prefix: "",
Recursive: true,
})
var totalSize int64
for object := range objectCh {
if object.Err != nil {
fmt.Println(object.Err)
return
}
totalSize += object.Size
fmt.Println(object,"******",object.Size,totalSize,object.LastModified)

}

//err = minioClient.RemoveBucket(context.Background(), "gwx")
//if err != nil {
// fmt.Println(err)
// return
//}

objectsCh := make(chan minio.ObjectInfo)
// Send object names that are needed to be removed to objectsCh
go func() {
defer close(objectsCh)
// List all objects from a bucket-name with a matching prefix.
for object := range minioClient.ListObjects(ctx, "test", minio.ListObjectsOptions{
Prefix: "对象数据集/模拟-考试题",
Recursive: true,
}) {
if object.Err != nil {
log.Fatalln(object.Err)
}
fmt.Println(object)
objectsCh <- object
}
}()

opts := minio.RemoveObjectsOptions{
GovernanceBypass: true,
}

for rErr := range minioClient.RemoveObjects(context.Background(), "test", objectsCh, opts) {
fmt.Println("Error detected during deletion: ", rErr)
}

//file, err := os.Open("D:\\huawei-oj\\test\\work\\main.go.bk")
//if err != nil {
// fmt.Println(err)
// return
//}
//defer file.Close()
//
//fileStat, err := file.Stat()
//if err != nil {
// fmt.Println(err)
// return
//}
//
//n, err := minioClient.PutObject(ctx, "test", "对象数据集/test.txt", file, fileStat.Size(), minio.PutObjectOptions{ContentType:"application/octet-stream"})
//if err != nil {
// fmt.Println(err)
// return
//}
//fmt.Println("Successfully uploaded bytes: ", n)

//objInfo, err := minioClient.StatObject(ctx,"test", "test.txt", minio.StatObjectOptions{})
//if err != nil {
// fmt.Println(err)
// return
//}
//fmt.Println(objInfo)

//object, err := minioClient.GetObject(ctx,"test", "test.txt", minio.GetObjectOptions{})
//if err != nil {
// fmt.Println(err)
// return
//}
//buf := make([]byte,1024,1024)
//object.Read(buf)
//
//fmt.Println(object.Read(buf))

//func get(w http.ResponseWriter, r *http.Request) {
// // 收到 接口服务器的 请求
// // 提取 要获取的文件名
// name := strings.Split(r.URL.EscapedPath(), "/")[2]
// f, e := os.Open(objectDir + name)
// if e != nil {
// log.Println(e)
// w.WriteHeader(http.StatusNotFound)
// return
// }
// defer f.Close()
// // 真正读取,并发送
// io.Copy(w, f)
//}

//localFile, err := os.Create("/tmp/test.txt")
//if err != nil {
// fmt.Println(err)
// return
//}
//if _, err = io.Copy(localFile, object); err != nil {
// fmt.Println(err)
// return
//}

//opts := minio.RemoveObjectOptions{
//}
//
//err = minioClient.RemoveObject(ctx,"test","对象数据集",opts)
//if err != nil {
// fmt.Println("********", err)
// return
//}
//
//fmt.Println("********", err)

}

minio API demo的更多相关文章

  1. Kafka2.4发布——新特性介绍(附Java Api Demo代码)

    新功能 允许消费者从最近的副本进行获取 为 Consumer Rebalance Protocol 增加对增量协同重新均衡(incremental cooperative rebalancing)的支 ...

  2. microwindows Win32 API demo

    初次使用microwindows,资料有限,我也是费了很多功夫才明白.所以记录下来,好帮助那些爱学习的童鞋,另外请大虾们多多指教. 什么是microwindows,什么作用,等背景介绍我就不多说了,因 ...

  3. Azure Storage Rest API Demo

    本文主要介绍如何使用C#基于Rest API 操作中国版Microsoft Azure Storage,涉及方法Put Blob.Get Blob以及Delete Blob,其它方法参考上面三种方法适 ...

  4. 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(二)-- Web Api Demo

    在上一篇里,我已经建立了一个简单的Web-Demo应用程序.这一篇将记录将此Demo程序改造成一个Web Api应用程序. 一.添加ASP.NET Core MVC包 1. 在project.json ...

  5. Google maps api demo

    demo: <!DOCTYPE html> <html> <head> <meta name="viewport" content=&qu ...

  6. ASP版_阿里大于短信API Demo

    阿里大于申请地址:http://www.alidayu.com 阿里大于短信发送Demo: ******index.asp************* <%@LANGUAGE="VBSC ...

  7. javascript 百度地图API - demo

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="ini ...

  8. Google maps api demo 2

    demo /** * @fileoverview Sample showing capturing a KML file click * and displaying the contents in ...

  9. Java Date API demo

    package date; import java.text.DateFormat; import java.util.Calendar; import java.util.Date; /*2015- ...

  10. SoundManager 2 / API Demo and Code Examples

    http://www.schillmania.com/projects/soundmanager2/

随机推荐

  1. (数据科学学习手札142)dill:Python中增强版的pickle

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,相信不少读者朋友们都在Pyth ...

  2. 【COS生态建设】开发者有奖调研,等你来参与!

    为了更好的赋能开发者,为大家提供更好的开源应用,我们诚挚的邀请您抽出几分钟参与"有奖问卷",告诉我们您对"COS生态建设"的意见和建议.希望通过这份调查问卷,能 ...

  3. Traefik开启监控,日志,追踪需要的参数

    监控 官方文档地址:https://doc.traefik.io/traefik/observability/metrics/overview/ 可以使用多种监控软件,比如Datadog,Influx ...

  4. 安装Alertmanager,nginx配置二级路径代理访问

    安装配置 Alertmanager wget https://github.com/prometheus/alertmanager/releases/download/v0.20.0/alertman ...

  5. nginx日志参数及含义

    参数含义 $remote_addr,$http_x_forwarded_for #记录客户端IP地址 $remote_user #记录客户端用户名称 $request #记录请求的URL和HTTP协议 ...

  6. 第六章:Django 综合篇 - 6:会话session

    因为因特网HTTP协议的特性,每一次来自于用户浏览器的请求(request)都是无状态的.独立的.通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户.对于静 ...

  7. Prometheus 通过 consul 分布式集群实现自动服务发现

    转载自:https://cloud.tencent.com/developer/article/1611091 1.Consul 介绍 Consul 是基于 GO 语言开发的开源工具,主要面向分布式, ...

  8. OSF--网络类型

    ABR:区域边界路由器ASBR:自治区域系统边界路由器区域部署原则:    存在vlink本地网络一定是有问题的.他只是作为一种过度技术,在vlink里无法实现认证! 配置:   [r2-ospf-a ...

  9. 4_爬NMPA药监总局_动态加载_传ID

    http://scxk.nmpa.gov.cn:81/xk/ import requests url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAc ...

  10. 【前端必会】webpack 插件,前进路绕不过的障碍

    背景 webpack的使用中我们会遇到各种各样的插件.loader. webpack的功力主要体现在能理解各个插件.loader的数量上.理解的越多功力越深 开始 https://webpack.do ...