Maison > développement back-end > Golang > le corps du texte

Comment configurer la limite de taille de téléchargement de fichiers dans le projet Golang ?

WBOY
Libérer: 2024-05-31 10:32:49
original
569 Les gens l'ont consulté

Configurez la limite de taille de téléchargement de fichiers dans le projet Golang : définissez le champ MaxFileSize de l'attribut de type FileHeader dans http.Request. Créez un gestionnaire de téléchargement de fichiers et définissez une limite de taille de fichier de téléchargement. Analysez les formulaires en plusieurs parties et extrayez les fichiers téléchargés. Enregistrez le fichier sur le disque. Renvoie une réponse de réussite ou une réponse d'erreur si la taille du fichier dépasse la limite.

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

Comment configurer la limite de taille de téléchargement de fichiers dans le projet Golang

Dans le projet Golang, la configuration de la limite de taille de téléchargement implique de définir l'attribut de type FileHeader de MaxFileSize 字段,该字段是 http.Request. Voici comment procéder :

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))
}
Copier après la connexion

Exemple pratique :

Utilisez Postman ou cURL pour télécharger un fichier de plus de 10 Mo, vous recevrez une réponse d'erreur comme celle-ci :

{
    "error": "文件大小超出了限制"
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal