Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Menghuraikan Kedua-dua Fail PDF dan Data JSON daripada Permintaan HTTP Tunggal dalam Go?

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

Linda Hamilton
Linda Hamiltonasal
2024-10-24 15:06:02397semak imbas

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>

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!

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