| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | package mainimport (	"crypto/md5"	"errors"	"fmt"	"io"	"log"	"os"	"github.com/minio/minio-go")func main() {	endpoint := "127.0.0.1:9000"	accessKeyID := "access_123"	secretAccessKey := "secret_123"	useSSL := false	location := "us-east-1"	minioClient, err := minio.NewWithRegion(endpoint,		accessKeyID, secretAccessKey,		useSSL, location)	if err != nil {		log.Fatalln(err)	}	buckets, err := minioClient.ListBuckets()	if err != nil {		log.Fatalln("ListBuckets err:", err)	}	fmt.Println("Existing buckets:")	for _, bucket := range buckets {		fmt.Println(bucket)	}	bucketName := "photolist"	err = minioClient.MakeBucket(bucketName, location)	if err != nil {		var minErr minio.ErrorResponse		if errors.As(err, &minErr) && minErr.Code == "BucketAlreadyOwnedByYou" {			// log.Printf("%s already exists\n", bucketName)		} else {			log.Fatalln("cant create bucker", bucketName, err)		}	} else {		log.Printf("bucket %s created\n", bucketName)	}	objectName := "building_1.jpg"	contentType := "image/jpeg"	file, err := os.Open("./building_1.jpg")	if err != nil {		log.Fatalln("cant open file:", err)	}	n, err := minioClient.PutObject(bucketName, objectName, file, -1, minio.PutObjectOptions{ContentType: contentType})	if err != nil {		log.Fatalln("PutObject err:", err)	}	log.Printf("Successfully uploaded %s of size %d\n", objectName, n)	// file.Seek(0, io.SeekStart)	reader, err := minioClient.GetObject(bucketName, objectName, minio.GetObjectOptions{})	if err != nil {		log.Fatalln("GetObject err:", err)	}	defer reader.Close()	hasher := md5.New()	io.Copy(hasher, reader)	log.Printf("download file with md5sum: %x\n", hasher.Sum(nil))	// -----	// return	policy := `{ 		"Version":"2012-10-17",		"Statement":[		   { 			  "Action":["s3:GetObject"],			  "Effect":"Allow",			  "Principal":{"AWS":["*"]},			  "Resource":["arn:aws:s3:::` + bucketName + `/*"],			  "Sid":""		   }		]	}`	err = minioClient.SetBucketPolicy(bucketName, policy)	if err != nil {		log.Fatalln("SetBucketPolicy err", err)	}}
 |