Golang 프로젝트에서 파일 업로드 크기 제한을 구성하는 방법은 무엇입니까?

WBOY
풀어 주다: 2024-05-31 10:32:49
원래의
569명이 탐색했습니다.

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을 사용하여 10MB보다 큰 파일을 업로드하면 다음과 같은 오류 응답을 받게 됩니다.

{
    "error": "文件大小超出了限制"
}
로그인 후 복사

위 내용은 Golang 프로젝트에서 파일 업로드 크기 제한을 구성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿