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