Maison > développement back-end > Golang > Comment publier des fichiers et des données de formulaire à l'aide de « multipart/form-data » de Go ?

Comment publier des fichiers et des données de formulaire à l'aide de « multipart/form-data » de Go ?

DDD
Libérer: 2024-11-25 09:48:38
original
666 Les gens l'ont consulté

How do I POST Files and Form Data Using Go's `multipart/form-data`?

Fichiers POST dans une demande de données multipart/formulaire

Les requêtes multipart sont fréquemment utilisées pour les téléchargements de fichiers, où, avec le fichier, des données de formulaire supplémentaires doivent être soumises. Voyons comment nous pouvons résoudre ce problème à l'aide des packages mime/multipart et http de Go.

Considérez le formulaire HTML suivant :

<form action="/multipart" enctype="multipart/form-data" method="POST">
  <label for="file">Please select a File</label>
  <input>
Copier après la connexion

Dans Go, nous pouvons envoyer cette requête multipart comme suit :

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
}
Copier après la connexion

La clé pour envoyer des fichiers dans des requêtes multipart réside dans l'utilisation de CreateFormFile sur *multipart.Writer pour créer un champ de formulaire spécifiquement pour le fichier. Une fois créé, nous pouvons utiliser io.Copy pour écrire le contenu du fichier dans ce champ de formulaire.

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal