Maison >développement back-end >Golang >Traitement des fichiers d'application Web d'apprentissage Golang

Traitement des fichiers d'application Web d'apprentissage Golang

WBOY
WBOYoriginal
2023-06-24 10:11:371401parcourir

Avec le développement continu de la technologie Internet, la demande d'applications Web augmente également. Dans le processus de développement d'applications Web, il est souvent nécessaire de gérer des opérations sur les fichiers et les répertoires, telles que le téléchargement de fichiers, l'affichage de listes de fichiers, etc. Dans le langage Golang, le traitement des fichiers est un point de connaissance très basique et un élément indispensable du développement d'applications Web. Cet article présentera comment Golang gère les opérations sur les fichiers dans les applications Web.

1. Opérations sur les fichiers

Les opérations sur les fichiers dans Golang sont principalement implémentées via le package os. Le package os fournit principalement les fonctions d'opération de fichiers et de répertoires suivantes :

1 Créer un fichier ou un répertoire
Nom de la fonction : os.Create(name string) (*os.File, erreur) #🎜 🎜# Objectif de la fonction : Créer un fichier nommé name. Si le fichier n'existe pas, créez-le. S'il existe, effacez le fichier

Nom de la fonction : os.Mkdir(name string, perm. os.FileMode) erreur

Objectif de la fonction : Créer un répertoire nommé name, le paramètre perm spécifie les autorisations du répertoire

Nom de la fonction : os.MkdirAll(path string, perm os.FileMode) error#🎜🎜 #Objectif de la fonction : Créer un répertoire multi-niveaux, si le répertoire existe déjà, aucune opération ne sera effectuée


2 Ouvrir le fichier

Nom de la fonction : os.Open(. chaîne de nom) (*os. Fichier, erreur)

Objectif de la fonction : Ouvrir un fichier nommé nom, si le fichier n'existe pas, renvoyer une erreur

3. 🎜🎜#Nom de la fonction : os. Remove(name string) error

Objectif de la fonction : Supprimer un fichier ou un répertoire nommé name Si le fichier ou le répertoire n'existe pas, une erreur est renvoyée


. Nom de la fonction : os.RemoveAll(path string ) error
Objectif de la fonction : Supprimer un répertoire multi-niveaux Si le répertoire n'existe pas, une erreur est renvoyée

4. 🎜#Nom de la fonction : os.ReadDir(dirname string) ([]os.DirEntry, erreur)
Objectif de la fonction : lire tous les fichiers et informations de répertoire sous le répertoire dirname et renvoyer une tranche de type os.DirEntry#🎜 🎜#

2. Téléchargement de fichiers#🎜🎜 #

Dans les applications Web, le téléchargement de fichiers est une exigence fonctionnelle courante. La méthode d'implémentation spécifique est la suivante :

1. la balise d'entrée du fichier téléchargé dans le formulaire HTML

fefcb30236bdeaaa7714d83e86dc7ebc

<input type="file" name="uploadfile" />
<input type="submit" value="上传文件" />

e083986a812e016ef20466f844ca7465

2. Dans le backend Dans le code, récupérez les informations sur le fichier téléchargé

file, handler, err := r.FormFile("uploadfile")#🎜🎜 #if err != nil {

//处理错误信息

}

où r est une variable de type http.Request Les informations sur le fichier peuvent être obtenues via la fonction r.FormFile. l’acquisition échoue, un message d’erreur sera renvoyé.

3. Enregistrez le fichier téléchargé

out, err := os.Create("./uploads/" + handler.Filename)

if err != néant {

//处理错误信息

}

defer out.Close()

_, err = io.Copy(out, file)
if err != nil {

//处理错误信息

}

Après avoir obtenu les informations sur le fichier, vous devez créer un fichier de sortie, puis écrire le contenu du fichier téléchargé via io.Copy fonction Dans le fichier de sortie, terminez l'opération de sauvegarde du fichier.

3. Téléchargement de fichiers

En plus du téléchargement de fichiers, le téléchargement de fichiers est également une exigence fonctionnelle courante dans les applications Web. La méthode de mise en œuvre spécifique est la suivante :

. #🎜🎜 #1.Envoyer des fichiers via le protocole HTTP

filename := "./uploads/examplefile.txt"

f, err := os.Open(filename) #🎜🎜 #if err != nil {

//处理错误信息

}

defer f.Close()

header := make([]byte, 512)# 🎜🎜# if _, err := f.Read(header); err != nil {

//处理错误信息

}


fileStat, err := f.Stat()# 🎜🎜# if err != nil {

//处理错误信息

}

w.Header().Set("Content-Disposition", "attachment; filename="+filename) #🎜🎜 #w.Header().Set("Content-Type", http.DetectContentType(header))

w.Header().Set("Content-Length", strconv.FormatInt(fileStat.Size (), 10))

f.Seek(0, 0)

io.Copy(w, f)

Dans cet exemple, d'abord via le système d'exploitation Fonction .Open Ouvrez le fichier qui doit être téléchargé, puis envoyez le contenu du fichier et les informations associées via le protocole http, et enfin écrivez le contenu du fichier dans le corps de la réponse HTTP via la fonction io.Copy pour implémenter l'opération de téléchargement de fichier.

4. Affichage de la liste de fichiers

Dans les applications Web, l'affichage de la liste de fichiers est également une exigence fonctionnelle courante, qui peut être réalisée grâce aux méthodes suivantes :

#🎜 🎜# 1. Récupérez la liste des fichiers dans le répertoire

dir, err := os.ReadDir("./uploads")

if err != nil {

//处理错误信息
# 🎜🎜# }

2. Parcourez la liste des fichiers et affichez

for _, d := range dir {

if !d.IsDir() {
    fmt.Fprintf(w, "<a href="/download?file=%s">%s</a><br>", d.Name(), d.Name())
}

}#🎜🎜 ##🎜🎜 #Dans cet exemple, la liste des fichiers dans le répertoire spécifié est obtenue via la fonction os.ReadDir, puis la liste des fichiers est affichée sur la page Web via l'opération de traversée et un lien de téléchargement de fichier est fourni.

5. Résumé

A travers l'introduction de cet article, nous pouvons constater que les opérations sur les fichiers en langage Golang sont très basiques, mais ce sont des points de connaissances essentiels pour développer des applications web. . Le téléchargement de fichiers, le téléchargement et l'affichage de listes sont des exigences courantes en matière d'exploitation de fichiers. Dans le développement réel, les méthodes ci-dessus doivent être appliquées de manière flexible pour répondre aux besoins des applications Web.

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