Rumah >pembangunan bahagian belakang >Golang >Bagaimana Mengendalikan Muat Naik Fail dengan Betul dalam Permintaan POST Berbilang Bahagian/Data Borang dengan Go?

Bagaimana Mengendalikan Muat Naik Fail dengan Betul dalam Permintaan POST Berbilang Bahagian/Data Borang dengan Go?

Linda Hamilton
Linda Hamiltonasal
2024-12-01 07:32:11241semak imbas

How to Properly Handle File Uploads in Multipart/Form-Data POST Requests with Go?

Menyelesaikan masalah POST Berbilang Bahagian/Data Borang dalam Go

Dalam konteks menghantar borang berbilang bahagian menggunakan pakej mime/berbilang dan http Go, anda mungkin menghadapi isu tertentu yang memerlukan penyelesaian masalah. Mari kita mendalami kes khusus yang berkaitan dengan mencipta medan fail.

Isunya

Anda mempunyai kod berikut dan cuba menghantar borang berbilang bahagian dengan kedua-dua medan teks dan fail:

func main() {
    // ...

    // Create a file field
    fw, err := w.CreateFormFile("file", "filename.dat")
    if err != nil {
        return err
    }

    // ...

    // Send the request
    resp, err := http.Post(url, w.FormDataContentType(), &buffer)
    if err != nil {
        return err
    }

    // ...
}

Walau bagaimanapun, anda sedang bergelut dengan cara mendapatkan Pembaca untuk membaca fail ke dalam penulis medan fail fw.

Penyelesaian

Untuk menyelesaikan isu ini, anda perlu membuka fail menggunakan os.Buka dan hantar *os.File yang dikembalikan sebagai io.Writer kepada fungsi CreateFormFile. Berikut ialah kod yang diperbetulkan:

import (
    "bytes"
    "io"
    "mime/multipart"
    "net/http"
    "os"
)

func main() {
    // ...

    // Open the file
    fd, err := os.Open("filename.dat")
    if err != nil {
        return err
    }

    // Create a file field
    fw, err := w.CreateFormFile("file", "filename.dat")
    if err != nil {
        return err
    }

    // Copy the file contents into the file field writer
    _, err = io.Copy(fw, fd)
    if err != nil {
        return err
    }

    // ...

    // Send the request
    resp, err := http.Post(url, w.FormDataContentType(), &buffer)
    if err != nil {
        return err
    }

    // ...
}

Dengan pengubahsuaian ini, kandungan fail akan ditulis dengan betul ke dalam borang berbilang bahagian, membolehkan anda menghantar kedua-dua medan teks dan fail dengan jayanya.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Muat Naik Fail dengan Betul dalam Permintaan POST Berbilang Bahagian/Data Borang dengan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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