Bagaimana untuk mengkonfigurasi had saiz muat naik fail dalam projek Golang?

WBOY
Lepaskan: 2024-05-31 10:32:49
asal
569 orang telah melayarinya

Konfigurasikan had saiz muat naik fail dalam projek Golang: Tetapkan medan MaxFileSize atribut jenis FileHeader dalam http.Request. Buat pengendali muat naik fail dan tetapkan had saiz fail muat naik. Menghuraikan borang berbilang bahagian dan mengekstrak fail yang dimuat naik. Simpan fail ke cakera. Mengembalikan respons kejayaan atau respons ralat jika saiz fail melebihi had.

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

Cara mengkonfigurasi had saiz muat naik fail dalam projek Golang

Dalam projek Golang, mengkonfigurasi had saiz muat naik melibatkan penetapan atribut jenis FileHeader MaxFileSize 字段,该字段是 http.Request. Begini cara untuk melakukannya:

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))
}
Salin selepas log masuk

Contoh praktikal:

Gunakan Posmen atau cURL untuk memuat naik fail yang lebih besar daripada 10 MB, anda akan menerima respons ralat seperti ini:

{
    "error": "文件大小超出了限制"
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi had saiz muat naik fail dalam projek Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan