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

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