package main
import (
"context"
"fmt"
"log"
"strings"
"github.com/minio/minio-go/v7"
"github.com/minio/minio-go/v7/pkg/credentials"
)
func main() {
// Connect to MinIO
minioClient, err := minio.New("localhost:9000", &minio.Options{
Creds: credentials.NewStaticV4("minioadmin", "minioadmin", ""),
Secure: false,
})
if err != nil {
log.Fatalln(err)
}
ctx := context.Background()
bucketName := "my-go-bucket"
// Create bucket
err = minioClient.MakeBucket(ctx, bucketName, minio.MakeBucketOptions{})
if err != nil {
log.Printf("Bucket creation error: %v", err)
}
// Upload file
objectName := "test-file.txt"
content := strings.NewReader("Hello from Go!")
contentType := "text/plain"
info, err := minioClient.PutObject(ctx, bucketName, objectName, content,
content.Size(), minio.PutObjectOptions{ContentType: contentType})
if err != nil {
log.Fatalln(err)
}
fmt.Printf("Uploaded %s, size: %d\n", objectName, info.Size)
// List objects
objectCh := minioClient.ListObjects(ctx, bucketName, minio.ListObjectsOptions{})
for object := range objectCh {
if object.Err != nil {
log.Fatalln(object.Err)
}
fmt.Printf("Object: %s, Size: %d\n", object.Key, object.Size)
}
// Download file
reader, err := minioClient.GetObject(ctx, bucketName, objectName, minio.GetObjectOptions{})
if err != nil {
log.Fatalln(err)
}
defer reader.Close()
}