Dans le contexte de l'envoi d'un formulaire multipart à l'aide des packages mime/multipart et http de Go, vous pouvez rencontrer certains problèmes qui nécessitent un dépannage. Examinons un cas spécifique lié à la création d'un champ de fichier.
Vous disposez du code suivant et essayez d'envoyer un formulaire en plusieurs parties avec à la fois des champs de texte et un fichier :
func main() { // ... // Create a file field fw, err := w.CreateFormFile("file", "filename.dat") if err != nil { return err } // ... // Send the request resp, err := http.Post(url, w.FormDataContentType(), &buffer) if err != nil { return err } // ... }
Cependant, vous avez du mal à obtenir un Reader pour lire le fichier dans le champ Writer fw du fichier.
Pour résoudre ce problème, vous devez ouvrir le fichier à l'aide de os.Open et transmettre le *os.File renvoyé en tant que io.Writer à la fonction CreateFormFile. Voici le code corrigé :
import ( "bytes" "io" "mime/multipart" "net/http" "os" ) func main() { // ... // Open the file fd, err := os.Open("filename.dat") if err != nil { return err } // Create a file field fw, err := w.CreateFormFile("file", "filename.dat") if err != nil { return err } // Copy the file contents into the file field writer _, err = io.Copy(fw, fd) if err != nil { return err } // ... // Send the request resp, err := http.Post(url, w.FormDataContentType(), &buffer) if err != nil { return err } // ... }
Avec cette modification, le contenu du fichier sera correctement écrit dans le formulaire en plusieurs parties, vous permettant d'envoyer à la fois des champs de texte et un fichier avec succès.
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!