Maison >développement back-end >Golang >Comment personnaliser le type de contenu pour les champs de formulaire individuels dans le formulaire en plusieurs parties de Go ?

Comment personnaliser le type de contenu pour les champs de formulaire individuels dans le formulaire en plusieurs parties de Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-27 10:23:03978parcourir

How to Customize Content-Type for Individual Form Fields in Go's Multipart Form?

Personnalisation du type de contenu pour les champs de formulaire en plusieurs parties dans Go

Cette question concerne la personnalisation du type de contenu pour les champs de formulaire individuels au sein d'un formulaire en plusieurs parties formulaire créé à l’aide du package Go mime/multipart. Bien que le code d'origine crée le formulaire en plusieurs parties, il suppose un type de contenu par défaut « application/octet-stream ». L'objectif est de définir un type de contenu spécifique pour un champ spécifique, tel que "audio/wav;rate=8000" pour un fichier audio.

Le package mime/multipart natif ne fournit pas de prise en charge explicite pour la configuration le Content-Type pour les champs individuels. Cependant, une implémentation personnalisée peut être utilisée pour y parvenir.

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

Cette fonction crée une nouvelle partie de formulaire avec le type de contenu souhaité. Le code original peut être modifié pour utiliser cette fonction :

<code class="go">audioFile, _ := CreateAudioFormFile(writer, "helloWorld.wav")
io.Copy(audioFile, file)</code>

Maintenant, l'API recevra le formulaire en plusieurs parties avec le Content-Type approprié pour le fichier audio. Les données du formulaire résultant ressembleront à ce qui suit :

--0c4c6b408a5a8bf7a37060e54f4febd6083fd6758fd4b3975c4e2ea93732
Content-Disposition: form-data; name="file"; filename="helloWorld.wav"
Content-Type: audio/wav;rate=8000
[audio file data]
--0c4c6b408a5a8bf7a37060e54f4febd6083fd6758fd4b3975c4e2ea93732--

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn