以下是使用 Golang 将文件上传到 MinIO 的示例代码:

package main

import (
	"fmt"
	"io/ioutil"
	"log"
	"mime/multipart"
	"net/http"
	"os"

	"github.com/minio/minio-go/v6"
)

func main() {
	// 设置 MinIO 客户端
	endpoint := "minio.example.com"
	accessKeyID := "ACCESS_KEY"
	secretAccessKey := "SECRET_KEY"
	useSSL := true

	minioClient, err := minio.New(endpoint, accessKeyID, secretAccessKey, useSSL)
	if err != nil {
		log.Fatalln(err)
	}

	// 打开要上传的文件
	file, err := os.Open("example.txt")
	if err != nil {
		log.Fatalln(err)
	}
	defer file.Close()

	// 将文件转换为 multipart 表单
	fileInfo, err := file.Stat()
	if err != nil {
		log.Fatalln(err)
	}

	fileContents, err := ioutil.ReadAll(file)
	if err != nil {
		log.Fatalln(err)
	}

	fileName := fileInfo.Name()
	fileType := http.DetectContentType(fileContents)

	fileWriter := new(bytes.Buffer)
	multipartWriter := multipart.NewWriter(fileWriter)

	filePart, err := multipartWriter.CreateFormFile("file", fileName)
	if err != nil {
		log.Fatalln(err)
	}

	filePart.Write(fileContents)

	multipartWriter.Close()

	// 上传文件到 MinIO
	_, err = minioClient.PutObject("mybucket", fileName, fileWriter, fileInfo.Size(), minio.PutObjectOptions{
		ContentType: fileType,
	})
	if err != nil {
		log.Fatalln(err)
	}

	fmt.Println("File uploaded successfully")
}

可以根据需要调整代码中的 MinIO 客户端设置和要上传的文件路径。上传后,文件将在名为 mybucket 的桶中可用。

请注意,此示例代码仅上传单个文件。如果需要上传多个文件,可以将上述代码放在循环中,并在每次迭代中更改要上传的文件路径和文件名。

golang 文件上传到minio

原文地址: https://www.cveoy.top/t/topic/vw2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录