go 表单上传图片文件 上传到minio
以下是使用 Go 语言实现表单上传图片文件并将其上传到 MinIO 的示例代码:
package main
import (
"fmt"
"io"
"net/http"
"os"
"github.com/minio/minio-go/v7"
)
func main() {
endpoint := "localhost:9000"
accessKeyID := "minioadmin"
secretAccessKey := "minioadmin"
useSSL := false
bucketName := "test-bucket"
// 初始化 MinIO 客户端
minioClient, err := minio.New(endpoint, &minio.Options{
Creds: credentials.NewStaticV4(accessKeyID, secretAccessKey, ""),
Secure: useSSL,
})
if err != nil {
fmt.Println(err)
return
}
// 创建一个 HTTP 服务器并监听 8080 端口
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
if r.Method == "POST" {
// 解析表单数据中的文件
file, header, err := r.FormFile("file")
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
// 在 MinIO 中创建一个新的对象
objectName := header.Filename
_, err = minioClient.PutObject(context.Background(), bucketName, objectName, file, -1, minio.PutObjectOptions{})
if err != nil {
fmt.Println(err)
return
}
fmt.Fprintf(w, "File %s uploaded successfully\n", objectName)
} else {
// 返回一个简单的 HTML 表单页面
fmt.Fprintf(w, `
<html>
<body>
<form enctype="multipart/form-data" method="post">
<input type="file" name="file" />
<input type="submit" value="Upload" />
</form>
</body>
</html>
`)
}
})
http.ListenAndServe(":8080", nil)
}
在上面的代码中,我们使用 minio-go 库来连接到 MinIO 服务器,创建一个新的对象,并将文件内容上传到该对象。我们还创建了一个简单的 HTTP 服务器,以便用户可以通过表单上传文件。在 HTTP POST 请求中,我们读取表单数据中的文件并将其上传到 MinIO 中。如果上传成功,我们返回一个成功消息。在 HTTP GET 请求中,我们返回一个简单的 HTML 表单页面,用户可以使用它来上传文件。
请注意,上面的示例代码仅用于演示目的,并未包含错误处理和安全性措施。在实际应用中,您应该对表单数据进行验证和过滤,以确保安全性和可靠性。
原文地址: https://www.cveoy.top/t/topic/vkd 著作权归作者所有。请勿转载和采集!