首頁  >  文章  >  後端開發  >  如何在 Golang 專案中設定檔上傳大小限制?

如何在 Golang 專案中設定檔上傳大小限制?

WBOY
WBOY原創
2024-05-31 10:32:49569瀏覽

在 Golang 專案中設定檔上傳大小限制:設定 http.Request 中 FileHeader 類型屬性的 MaxFileSize 欄位。建立檔案上傳處理程序並設定上傳檔案大小限制。解析多部分錶單並提取上傳檔案。將文件保存到磁碟。返回成功回應或錯誤回應(如果檔案大小超出限制)。

如何在 Golang 项目中配置文件上传大小限制?

如何在Golang 專案中設定檔上傳大小限制

在Golang 專案中,設定上傳大小限制涉及設定MaxFileSize 字段,該字段是http.Request 的FileHeader 類型屬性。以下是如何實現的:

package main

import (
    "fmt"
    "log"
    "net/http"
    "os"
)

func main() {
    // 设置上传文件大小限制为 10 MB
    maxFileSize := int64(10 * 1024 * 1024)

    // 创建文件上传处理程序
    http.HandleFunc("/upload", func(w http.ResponseWriter, r *http.Request) {
        // 检查请求是否是多部分表单
        if r.Method == "POST" && r.MultipartForm == nil {
            http.Error(w, "请求不是多部分表单", http.StatusBadRequest)
            return
        }

        // 解析多部分表单
        if err := r.ParseMultipartForm(maxFileSize); err != nil {
            http.Error(w, fmt.Sprintf("解析表单时出错:%v", err), http.StatusInternalServerError)
            return
        }

        // 提取上传文件
        file, fileHeader, err := r.FormFile("file")
        if err != nil {
            http.Error(w, fmt.Sprintf("提取文件时出错:%v", err), http.StatusBadRequest)
            return
        }
        defer file.Close()

        // 将文件保存到磁盘
        dst, err := os.Create("uploaded_file")
        if err != nil {
            http.Error(w, fmt.Sprintf("保存文件时出错:%v", err), http.StatusInternalServerError)
            return
        }
        defer dst.Close()

        if _, err = io.Copy(dst, file); err != nil {
            http.Error(w, fmt.Sprintf("复制文件时出错:%v", err), http.StatusInternalServerError)
            return
        }

        // 返回成功响应
        fmt.Fprintf(w, "文件上传成功!")
    })

    // 启动服务器
    log.Fatal(http.ListenAndServe(":8080", nil))
}

實戰案例:

使用Postman 或cURL 上傳大於10 MB 的文件,你將收到一個錯誤回應,如下所顯示:

{
    "error": "文件大小超出了限制"
}

以上是如何在 Golang 專案中設定檔上傳大小限制?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn