Wie poste ich Dateien und Formulardaten mit „multipart/form-data' von Go?

DDD
Freigeben: 2024-11-25 09:48:38
Original
576 Leute haben es durchsucht

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

POST-Dateien in Multipart-/Formulardatenanfragen

Mehrteilige Anfragen werden häufig für Datei-Uploads verwendet, bei denen zusammen mit der Datei zusätzliche Formulardaten übermittelt werden müssen. Schauen wir uns an, wie wir dieses Problem mithilfe der Mime/Multipart- und http-Pakete von Go lösen können.

Betrachten Sie das folgende HTML-Formular:

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

In Go können wir diese Multipart-Anfrage wie folgt senden:

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
}
Nach dem Login kopieren

Der Schlüssel zum Senden von Dateien in mehrteiligen Anfragen liegt in der Verwendung von CreateFormFile auf dem *multipart.Writer, um speziell ein Formularfeld zu erstellen für die Datei. Nach der Erstellung können wir mit io.Copy den Inhalt der Datei in dieses Formularfeld schreiben.

Das obige ist der detaillierte Inhalt vonWie poste ich Dateien und Formulardaten mit „multipart/form-data' von Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage