Maison  >  Article  >  développement back-end  >  Utilisez la fonction http.ServeFile pour envoyer le fichier spécifié au client comme corps de la réponse HTTP.

Utilisez la fonction http.ServeFile pour envoyer le fichier spécifié au client comme corps de la réponse HTTP.

WBOY
WBOYoriginal
2023-07-24 23:53:081629parcourir

Utilisez la fonction http.ServeFile pour envoyer le fichier spécifié au client comme corps de la réponse HTTP

Dans le langage Go, nous pouvons utiliser le package http pour créer rapidement un serveur HTTP. Cependant, nous devons parfois envoyer un fichier local au client comme corps de la réponse HTTP. Afin de réaliser cette fonction, nous pouvons utiliser la fonction http.ServeFile. La fonction

http.ServeFile accepte un ResponseWriter et une Request comme paramètres et envoie le fichier spécifié au client comme corps de la réponse HTTP. Il gère automatiquement l'en-tête Range dans les requêtes HTTP pour prendre en charge la reprise des téléchargements.

Ce qui suit est un exemple qui montre comment utiliser la fonction http.ServeFile pour envoyer un fichier local au client :

package main

import (
    "log"
    "net/http"
)

func serveFile(w http.ResponseWriter, r *http.Request) {
    http.ServeFile(w, r, "./example.txt")
}

func main() {
    http.HandleFunc("/", serveFile)
    log.Fatal(http.ListenAndServe(":8080", nil))
}

Dans cet exemple, nous créons un serveur HTTP qui écoute le port 8080 local. Lorsqu'une requête HTTP est reçue, elle appelle la fonction serveFile pour gérer la requête. La fonction http.ServeFile est utilisée dans la fonction serveFile pour envoyer le fichier "./example.txt" au client. Assurez-vous d'enregistrer l'exemple de code ci-dessus sous forme de fichier et de placer le fichier local "example.txt" dans le même répertoire.

Après avoir exécuté ce programme, visitez http://localhost:8080 dans le navigateur et vous verrez que le navigateur a téléchargé le fichier "example.txt". L'en-tête Content-Type de la réponse HTTP est automatiquement défini en fonction de l'extension du fichier, afin que le type de fichier soit correctement identifié.

Il est à noter que la fonction http.ServeFile traitera automatiquement l'en-tête Range dans la requête HTTP lors de l'envoi du fichier au client. Si le client demande une partie du fichier (par exemple, lors de la reprise d'un téléchargement), la fonction http.ServeFile enverra automatiquement uniquement le contenu de cette partie. Cela nous permet de télécharger des fichiers volumineux en plusieurs lots sans avoir à charger l'intégralité du fichier.

En plus d'envoyer le fichier au client comme corps de la réponse HTTP, la fonction http.ServeFile gérera également automatiquement les situations anormales telles que l'inexistence d'un fichier et l'échec de la lecture du fichier, et renverra le code d'erreur HTTP correspondant. Nous n’avons donc pas besoin de gérer ces situations manuellement, ce qui est très pratique.

Résumé :
En langage Go, en utilisant la fonction http.ServeFile, nous pouvons facilement envoyer des fichiers locaux au client comme corps de la réponse HTTP. Il peut non seulement gérer automatiquement l'en-tête Range dans les requêtes HTTP, mais également gérer les exceptions telles que l'inexistence de fichiers et l'échec de lecture de fichiers. Cela nous permet de créer rapidement un serveur de fichiers statiques entièrement fonctionnel.

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