Heim  >  Artikel  >  Backend-Entwicklung  >  Wie überwache ich den Upload-Fortschritt für POST-Anfragen in Go?

Wie überwache ich den Upload-Fortschritt für POST-Anfragen in Go?

Susan Sarandon
Susan SarandonOriginal
2024-10-31 22:21:28939Durchsuche

How to Monitor Upload Progress for POST Requests in Go?

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn