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. PHP代码审计——文件操作漏洞

    梦想CMS(lmxcms)任意文件删除 1. 漏洞详情--CNVD-2020-59469   2. 漏洞描述称后台Ba***.cl***.php文件存在任意文件删除,查看cms源码,只有BackdbA ...

  2. 【设计模式】Java设计模式 - 观察者模式

    [设计模式]Java设计模式 - 观察者模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 @一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长 ...

  3. KingbaseES时间函数的比较

    KingbaseES提供了多种的时间函数,这些函数在使用过程中存在哪些不同? **同一事务** test=# begin test-# for i in 1.. 10 loop test-# rais ...

  4. limits.conf 配置不生效问题排查

    在部署数据库时,经常会遇到打开最大文件数限制 too many open files 的警告,通常我们只需要修改/etc/security/limits.conf该文件,增加两行,重新登录即可解决. ...

  5. 华南理工大学 Python第4章课后小测-1

    1.(单选)下面程序的输出结果是: for c in "ComputerScience": print(c,end="") if c=="S" ...

  6. C#:winform窗体 实现类似QQ的窗体在桌面边缘停靠和隐藏

    设计思路:1.使用定时器(Timer)来监控鼠标位置和窗体位置,并实现窗体的停靠和隐藏2.当鼠标拖动窗体时,窗体才有可能根据自身位置决定是否停靠3.如果窗体四周没有接触到屏幕边缘则不会停靠4.如果窗体 ...

  7. UEC++ 多线程(一) FRunnable

    虚幻官方文档:https://docs.unrealengine.com/5.0/en-US/API/Runtime/Core/HAL/FRunnable/ FRunnable "runna ...

  8. MySQL主从同步报错故障处理记录

    从库上记录删除失败,Error_code: 1032 问题描述:在master上删除一条记录,而slave上找不到,导致报错 Last_SQL_Error: Could not execute Del ...

  9. Elastic:应用程序性能监控/管理(APM)实践

    在今天的文章里,我们将介绍Elastic的一个重要的应用:应用程序性能管理(Application Performance Monitoring/Management),简称APM.那么到底什么是AP ...

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

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