package uploader import ( "backup-tool/helpers" "context" "errors" "github.com/minio/minio-go/v7" "log" "os" ) func UploadFile(bucketName, endpoint, fileName string) error { ctx := context.Background() accessKeyID, secretAccessKey, err := helpers.GetCredentials() if err != nil { return (err) } client, err := helpers.CreateClient(accessKeyID, secretAccessKey, endpoint) if err != nil { return (err) } err = helpers.VerifyBucket(client, ctx, bucketName) if err != nil { return err } absolutePath, basename, err := validateUploadFile(fileName) if err != nil { return err } _, err = client.FPutObject(ctx, bucketName, basename, absolutePath, minio.PutObjectOptions{}) if err != nil { return err } log.Printf("upload of %s complete\n", basename) return nil } func validateUploadFile(fileName string) (string, string, error) { file, err := os.Stat(fileName) if err != nil { return "", "", err } if file.IsDir() { return "", "", errors.New("upload of directories is not supported") } return fileName, file.Name(), nil }