Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah cara saya MENYATAKAN Fail dan Data Borang menggunakan `berbilang bahagian/data-bentuk` Go?

Bagaimanakah cara saya MENYATAKAN Fail dan Data Borang menggunakan `berbilang bahagian/data-bentuk` Go?

DDD
DDDasal
2024-11-25 09:48:38601semak imbas

How do I POST Files and Form Data Using Go's `multipart/form-data`?

POST Fail dalam Permintaan Multipart/Borang-Data

Permintaan berbilang bahagian kerap digunakan untuk muat naik fail, di mana bersama-sama dengan fail, data borang tambahan perlu diserahkan. Mari lihat bagaimana kita boleh menangani perkara ini menggunakan pakej mime/multipart dan http Go.

Pertimbangkan borang HTML berikut:

<form action="/multipart" enctype="multipart/form-data" method="POST">
  <label for="file">Please select a File</label>
  <input>

Dalam Go, kami boleh menghantar permintaan berbilang bahagian ini seperti berikut:

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

var buffer bytes.Buffer
w := multipart.NewWriter(&buffer)

// Write form fields
w.CreateFormField("input1")
w.WriteField("input1", "value1")

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

// Create a form field for the file
fw, err := w.CreateFormFile("file", fd.Name())
if err != nil {
  return err
}

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

// Close writer
w.Close()

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

Kunci untuk menghantar fail dalam permintaan berbilang bahagian terletak pada penggunaan CreateFormFile pada *multipart.Writer untuk mencipta medan borang khusus untuk fail. Setelah dibuat, kita boleh menggunakan io.Copy untuk menulis kandungan fail ke dalam medan borang ini.

Atas ialah kandungan terperinci Bagaimanakah cara saya MENYATAKAN Fail dan Data Borang menggunakan `berbilang bahagian/data-bentuk` 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