Heim  >  Artikel  >  Backend-Entwicklung  >  Wie konfiguriere ich die Größenbeschränkung für Datei-Uploads im Golang-Projekt?

Wie konfiguriere ich die Größenbeschränkung für Datei-Uploads im Golang-Projekt?

WBOY
WBOYOriginal
2024-05-31 10:32:49548Durchsuche

Konfigurieren Sie die Größenbeschränkung für den Datei-Upload im Golang-Projekt: Legen Sie das MaxFileSize-Feld des FileHeader-Typattributs in http.Request fest. Erstellen Sie einen Datei-Upload-Handler und legen Sie eine Größenbeschränkung für Upload-Dateien fest. Analysieren Sie mehrteilige Formulare und extrahieren Sie hochgeladene Dateien. Speichern Sie die Datei auf der Festplatte. Gibt eine Erfolgsantwort oder eine Fehlerantwort zurück, wenn die Dateigröße den Grenzwert überschreitet.

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

So konfigurieren Sie die Datei-Upload-Größenbeschränkung im Golang-Projekt

Im Golang-Projekt umfasst die Konfiguration der Upload-Größenbeschränkung das Festlegen des FileHeader-Typattributs von MaxFileSize 字段,该字段是 http.Request. So geht's:

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))
}

Praxisbeispiel:

Verwenden Sie Postman oder cURL, um eine Datei größer als 10 MB hochzuladen. Sie erhalten eine Fehlermeldung wie diese:

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

Das obige ist der detaillierte Inhalt vonWie konfiguriere ich die Größenbeschränkung für Datei-Uploads im Golang-Projekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn