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>
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 }
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!