Dans une application Web, il est courant de recevoir à la fois des fichiers et des données JSON dans une requête HTTP. Pour traiter avec succès ces éléments, il est essentiel de comprendre comment les analyser efficacement.
Considérez un scénario dans lequel vous disposez d'un frontal AngularJS qui envoie une requête à un backend Go. La requête contient un fichier (« file ») et des données JSON (« doc »). Votre objectif est d'analyser à la fois le fichier PDF et les données JSON de cette requête.
Pour résoudre ce problème, vous devez traiter séparément le fichier et les données JSON. En utilisant http.(*Request).MultipartReader() et en itérant sur les parties à l'aide de NextPart(), vous pouvez extraire et analyser chaque élément.
mr, err := r.MultipartReader()
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
Pour chaque partie de la requête en plusieurs parties :
part, err := mr.NextPart()
if err == io.EOF {
break
}
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
Si la pièce est un fichier (part.FormName() == "file") :
outfile, err := os.Create("./docs/" part.FileName())
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
defer outfile.Close()
_, err = io.Copy(outfile, part)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
Si la pièce contient des données JSON (part.FormName() == "doc") :
jsonDecoder := json.NewDecoder(part)
err = jsonDecoder.Decode(&doc)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
Après avoir analysé le fichier et les données JSON, vous pouvez effectuer tout post-traitement nécessaire, comme l'enregistrer dans une base de données ou envoyer une réponse au client .
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3