golang 文件上传到minio
以下是使用 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 的桶中可用。
请注意,此示例代码仅上传单个文件。如果需要上传多个文件,可以将上述代码放在循环中,并在每次迭代中更改要上传的文件路径和文件名。
原文地址: https://www.cveoy.top/t/topic/vw2 著作权归作者所有。请勿转载和采集!