Maison > développement back-end > Golang > Comment gérer simultanément le téléchargement de JSON et d'images dans un framework Go Gin ?

Comment gérer simultanément le téléchargement de JSON et d'images dans un framework Go Gin ?

DDD
Libérer: 2024-11-29 04:12:09
original
692 Les gens l'ont consulté

How to Handle JSON and Image Upload Simultaneously in a Go Gin Framework?

Réception de données et d'images JSON dans Go à l'aide de Gin

Dans Go, nous pouvons utiliser le framework Gin pour gérer les requêtes HTTP et lier les données à des structures de requête personnalisées. Pour recevoir à la fois des données JSON et une image dans une seule requête multipart/form-data, nous pouvons définir le gestionnaire de requête suivant :

func UpdateProfile(c *gin.Context) {
    type request struct {
        Avatar      *multipart.FileHeader `form:"avatar" binding:"required"`
        User struct {
            Username    string `json:"username" binding:"required,min=4,max=20"`
            Description string `json:"description" binding:"required,max=100"`
        } `form:"user" binding:"required"`
    }

    var updateRequest request

    // Bind the request data to the request structure
    if err := c.ShouldBindWith(&updateRequest, binding.FormMultipart); err != nil {
        // Return an appropriate error response
        _ = c.AbortWithError(http.StatusBadRequest, err)
        return
    }

    // Handle the image
    // ...

    // Handle the JSON data
    // ...
}
Copier après la connexion

Exemple de requête :

Pour envoyer une requête avec les deux Des données JSON et une image, utilisez un type de contenu multipart/form-data. Le corps de la requête doit être structuré comme suit :

--boundary
Content-Disposition: form-data; name="avatar"; filename="profile.jpg"
Content-Type: image/jpeg
//... image data
--boundary
Content-Disposition: form-data; name="user"
Content-Type: application/json
{
    "username": "username",
    "description": "description"
}
--boundary--
Copier après la connexion

Remarques :

  • Les balises de liaison garantissent que la validation du champ approprié se produit.
  • c.ShouldBindWith explicitement lie les données de la requête à l'aide du moteur de liaison FormMultipart, conçu pour les requêtes multipart/form-data.

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!

source:php.cn
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