Überwachen des Upload-Fortschritts für POST-Anfragen in Go
Bei der Übertragung großer Dateien über HTTP-POST-Anfragen ist die Verfolgung des Upload-Fortschritts von entscheidender Bedeutung. In Go gibt es mehrere Techniken, um diese Funktionalität zu erreichen.
Benutzerdefinierter Reader mit Fortschrittsverfolgung
Ein Ansatz besteht darin, einen benutzerdefinierten io.Reader zu erstellen, der den eigentlichen Reader kapselt . Dieser angepasste Reader kann dann den Fortschritt jedes Mal melden, wenn die Read()-Methode aufgerufen wird.
<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>
Instanziieren Sie in der Hauptfunktion den ProgressReader mit der hochzuladenden Datei und einer Reporterfunktion zur Ausgabe des Fortschritts.
<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>
Dieser Ansatz bietet mehr Flexibilität und Kontrolle darüber, wie der Fortschritt gemeldet wird. Darüber hinaus kann es sowohl für HTTP- als auch für HTTPS-Sites verwendet werden.
Das obige ist der detaillierte Inhalt vonWie überwache ich den Upload-Fortschritt für POST-Anfragen in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!