以下是使用 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 表单页面,用户可以使用它来上传文件。

请注意,上面的示例代码仅用于演示目的,并未包含错误处理和安全性措施。在实际应用中,您应该对表单数据进行验证和过滤,以确保安全性和可靠性。

go 表单上传图片文件 上传到minio

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

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