Anpassen des Inhaltstyps für mehrteilige Formularfelder in Go
Das Senden mehrteiliger Formulare erfordert häufig die Angabe eines bestimmten Inhaltstyp-Headers für einzelne Felder. beispielsweise beim Hochladen einer Audiodatei. Das Multipart/Mime-Paket von Go bietet zwar eine bequeme Möglichkeit zum Erstellen mehrteiliger Formulare, ermöglicht jedoch nicht das Festlegen feldspezifischer Content-Type-Header.
Lösung
As Da es derzeit keine integrierte Unterstützung für diese Funktionalität gibt, kann eine benutzerdefinierte Lösung implementiert werden. Hier ist eine modifizierte Version der CreateFormFile-Funktion:
<code class="go">func CreateAudioFormFile(w *multipart.Writer, filename string) (io.Writer, error) { h := make(textproto.MIMEHeader) h.Set("Content-Disposition", fmt.Sprintf(`form-data; name="%s"; filename="%s"`, "file", filename)) h.Set("Content-Type", "audio/wav;rate=8000") return w.CreatePart(h) }</code>
Verwendung
So verwenden Sie diese benutzerdefinierte Funktion:
<code class="go">// Get file as bytes file, err := os.Open("helloWorld.wav") buf := new(bytes.Buffer) writer := multipart.NewWriter(buf) // Create multipart form field with custom Content-Type header audioFile, _ := CreateAudioFormFile(writer, "helloWorld.wav") // Copy file data to multipart form field io.Copy(audioFile, file) writer.Close()</code>
Ausgabe
Dadurch wird ein mehrteiliges Formular mit den folgenden Metadaten generiert:
--0c4c6b408a5a8bf7a37060e54f4febd6083fd6758fd4b3975c4e2ea93732 Content-Disposition: form-data; name="file"; filename="helloWorld.wav" Content-Type: audio/wav;rate=8000 [file data] --0c4c6b408a5a8bf7a37060e54f4febd6083fd6758fd4b3975c4e2ea93732--
Auf diese Weise können Sie bei Verwendung von Multipart/Mime ganz einfach den Inhaltstyp für bestimmte Formularfelder festlegen Paket.
Das obige ist der detaillierte Inhalt vonWie kann ich den Inhaltstyp für mehrteilige Formularfelder in Go anpassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!