Bagaimana Menghuraikan Kedua-dua Fail PDF dan Data JSON daripada Permintaan HTTP Tunggal dalam Go?

Linda Hamilton
Lepaskan: 2024-10-24 15:06:02
asal
404 orang telah melayarinya

How to Parse Both a PDF File and JSON Data from a Single HTTP Request in Go?

Serentak Menghuraikan Fail PDF dan Data JSON daripada Permintaan HTTP Tunggal dalam Go

Apabila mengendalikan permintaan HTTP yang mengandungi data borang berbilang bahagian, ia boleh diperlukan untuk menghuraikan kedua-dua fail dan data JSON daripada permintaan yang sama. Contoh biasa ialah borang di mana pengguna boleh memuat naik dokumen (PDF) dan menyediakan data tambahan (JSON) yang berkaitan dengan fail.

Untuk mencapai ini dalam Go, fungsi r.ParseMultipartForm tidak mencukupi kerana ia hanya menghuraikan data berbilang bahagian. Untuk mengendalikan kedua-dua fail dan data JSON secara berasingan, fungsi r.MultipartReader diperlukan.

Penyelesaian:

Fungsi r.MultipartReader mengembalikan objek berbilang bahagian.Reader yang membenarkan lelaran pada setiap bahagian data bentuk berbilang bahagian menggunakan fungsi r.NextPart. Ini membolehkan kami memproses setiap bahagian secara individu, membezakan antara bahagian fail dan bahagian JSON.

Berikut ialah versi terkini fungsi pengendali:

<code class="go">func (s *Server) PostFileHandler(w http.ResponseWriter, r *http.Request) {
    mr, err := r.MultipartReader()
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    }

    doc := Doc{}
    for {
        part, err := mr.NextPart()

        if err == io.EOF {
            break
        }

        if err != nil {
            http.Error(w, err.Error(), http.StatusInternalServerError)
            return
        }

        if part.FormName() == "file" {
            doc.Url = part.FileName()
            outfile, err := os.Create("./docs/" + part.FileName())
            if err != nil {
                http.Error(w, err.Error(), http.StatusInternalServerError)
                return
            }
            defer outfile.Close()
            _, err = io.Copy(outfile, part)
            if err != nil {
                http.Error(w, err.Error(), http.StatusInternalServerError)
                return
            }
        }

        if part.FormName() == "doc" {
            jsonDecoder := json.NewDecoder(part)
            err = jsonDecoder.Decode(&doc)
            if err != nil {
                http.Error(w, err.Error(), http.StatusInternalServerError)
                return
            }</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana Menghuraikan Kedua-dua Fail PDF dan Data JSON daripada Permintaan HTTP Tunggal dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!