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