Personnalisation du type de contenu pour les champs de formulaire en plusieurs parties dans Go
L'envoi de formulaires en plusieurs parties nécessite souvent de spécifier un en-tête Content-Type spécifique pour des champs individuels, comme lors du téléchargement d'un fichier audio. Bien que le package multipart/mime de Go offre un moyen pratique de créer des formulaires en plusieurs parties, il ne permet pas de définir des en-têtes Content-Type spécifiques aux champs.
Solution
Comme il n'existe actuellement aucune prise en charge intégrée pour cette fonctionnalité, une solution personnalisée peut être implémentée. Voici une version modifiée de la fonction CreateFormFile :
<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>
Utilisation
Pour utiliser cette fonction personnalisée :
<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>
Sortie
Cela générera un formulaire en plusieurs parties avec les métadonnées suivantes :
--0c4c6b408a5a8bf7a37060e54f4febd6083fd6758fd4b3975c4e2ea93732 Content-Disposition: form-data; name="file"; filename="helloWorld.wav" Content-Type: audio/wav;rate=8000 [file data] --0c4c6b408a5a8bf7a37060e54f4febd6083fd6758fd4b3975c4e2ea93732--
De cette façon, vous pouvez facilement définir le type de contenu pour des champs de formulaire spécifiques lorsque vous utilisez le multipart/mime paquet.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!