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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-10-28 08:01:02665parcourir

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

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!

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