Maison > développement back-end > Golang > Comment surveiller la progression du téléchargement pour les requêtes POST dans Go ?

Comment surveiller la progression du téléchargement pour les requêtes POST dans Go ?

Susan Sarandon
Libérer: 2024-10-31 22:21:28
original
1037 Les gens l'ont consulté

How to Monitor Upload Progress for POST Requests in Go?

Surveillance de la progression du téléchargement pour les requêtes POST dans Go

Lors de la transmission de fichiers volumineux via des requêtes HTTP POST, le suivi de la progression du téléchargement devient crucial. Dans Go, il existe plusieurs techniques pour obtenir cette fonctionnalité.

Lecteur personnalisé avec suivi de la progression

Une approche consiste à créer un io.Reader personnalisé qui encapsule le lecteur réel . Ce lecteur personnalisé peut ensuite signaler la progression à chaque fois que la méthode Read() est invoquée.

<code class="go">type ProgressReader struct {
    io.Reader
    Reporter func(r int64)
}

func (pr *ProgressReader) Read(p []byte) (n int, err error) {
    n, err = pr.Reader.Read(p)
    pr.Reporter(int64(n))
    return
}</code>
Copier après la connexion

Dans la fonction principale, instanciez le ProgressReader avec le fichier à télécharger et une fonction de rapport pour afficher la progression.

<code class="go">func main() {
    file, _ := os.Open("/tmp/blah.go")
    total := int64(0)
    pr := &ProgressReader{file, func(r int64) {
        total += r
        if r > 0 {
            fmt.Println("progress", r)
        } else {
            fmt.Println("done", r)
        }
    }}
    io.Copy(ioutil.Discard, pr)
}</code>
Copier après la connexion

Cette approche offre plus de flexibilité et de contrôle sur la manière dont les progrès sont signalés. De plus, il peut être utilisé pour les sites HTTP et HTTPS.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal