Maison >développement back-end >Golang >Comment préparer du gin golang

Comment préparer du gin golang

PHPz
PHPzoriginal
2023-05-19 11:02:07547parcourir

Téléchargement et téléchargement de fichiers

Gin est un framework de développement Web développé en langage Go. Il est efficace, facile à utiliser et flexible. Pour le téléchargement et le téléchargement de fichiers, ces fonctions peuvent être facilement implémentées à l'aide du framework Gin. Cet article explique comment utiliser le framework Gin pour télécharger et télécharger des fichiers.

1. Téléchargement de fichiers

Dans le framework Gin, le téléchargement de fichiers nécessite l'utilisation du formulaire MultipartForm. Tout d'abord, vous devez définir les fonctions de routage et de traitement :

router.POST("/upload", uploadHandler)

func uploadHandler(c *gin.Context) {

file, err := c.FormFile("file")
if err != nil {
    c.JSON(http.StatusBadRequest, gin.H{
        "error": err.Error(),
    })
    return
}

filename := filepath.Base(file.Filename)
if err := c.SaveUploadedFile(file, filename); err != nil {
    c.JSON(http.StatusBadRequest, gin.H{
        "error": err.Error(),
    })
    return
}

c.JSON(http.StatusOK, gin.H{
    "message": fmt.Sprintf("'%s' uploaded!", filename),
})

}

Dans la fonction de traitement de téléchargement de fichiers, premier passage La fonction c.FormFile() obtient le fichier téléchargé et gère les erreurs. Obtenez ensuite le nom du fichier et utilisez la fonction c.SaveUploadedFile() pour enregistrer le fichier dans le répertoire spécifié. Enfin, les résultats du téléchargement sont renvoyés via JSON.

Démarrez le service Gin et visitez http://localhost:8080/upload Vous verrez l'interface suivante :

https://user-images.githubusercontent.com/36320997/129822689-f45e849c-7cae-4ad9-9107. - aae98f76d34c.png

Une fois le fichier téléchargé avec succès, vous verrez le résultat de retour JSON suivant :

{

"message": "'test.txt' uploaded!"

}

2. Téléchargement de fichier

Le téléchargement de fichier nécessite le service de fichiers statiques du framework Gin. Ceci peut être réalisé grâce aux opérations suivantes :

1. Créez n'importe quel répertoire dans l'application pour enregistrer les fichiers téléchargés.

2. Dans le routage Gin, définissez l'accès aux fichiers de ce répertoire, comme suit :

router.StaticFS("/download", http.Dir("tmp"))

3. , selon Le nom du fichier définit l'interface de téléchargement, comme suit :

router.GET("/download/:filename", downloadHandler)

func downloadHandler(c *gin.Context) {

filename := c.Param("filename")
file := "./tmp/" + filename // 通过配置文件获取下载目录地址,如: "./tmp/" + filename

fi, err := os.Stat(file)
if err != nil {
    c.JSON(http.StatusBadRequest, gin.H{
        "error": err.Error(),
    })
    return
}

c.Writer.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=%s", fi.Name()))
c.Writer.Header().Set("Content-Type", "application/octet-stream")
c.File(file)

}

Dans le fonction de traitement de téléchargement de fichier, vous devez obtenir le nom du fichier via c.Param(), déterminer si le fichier existe, définir l'en-tête de réponse HTTP de téléchargement et enfin écrire le fichier dans la réponse pour implémenter la fonction de téléchargement de fichier.

Démarrez le service Gin et visitez le lien suivant http://localhost:8080/download/test.txt pour télécharger le fichier test.txt.

3. Résumé

Les fonctions de téléchargement et de téléchargement de fichiers sont implémentées via le framework Gin, qui est élégant et concis. Le code ci-dessus n'est que l'implémentation de base. En utilisation réelle, vous devez également prendre en compte l'emplacement et la méthode de stockage des fichiers, ainsi que les opérations ultérieures sur les fichiers, etc. Les lecteurs peuvent l'améliorer en fonction de leurs propres conditions réelles.

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:
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
Article précédent:Golang implémente pyffxArticle suivant:Golang implémente pyffx