Go에서 POST 요청에 대한 업로드 진행 상황 모니터링
HTTP POST 요청을 통해 대용량 파일을 전송할 때는 업로드 진행 상황을 추적하는 것이 중요합니다. Go에는 이 기능을 구현하는 몇 가지 기술이 있습니다.
진행률 추적 기능이 있는 사용자 정의 리더
한 가지 접근 방식은 실제 리더를 캡슐화하는 사용자 정의 io.Reader를 만드는 것입니다. . 그런 다음 이 사용자 정의 리더는 Read() 메서드가 호출될 때마다 진행 상황을 보고할 수 있습니다.
<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>
주 함수에서 업로드할 파일과 진행 상황을 출력하는 보고 기능을 사용하여 ProgressReader를 인스턴스화합니다.
<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>
이 접근 방식은 진행 상황 보고 방식에 대한 더 많은 유연성과 제어 기능을 제공합니다. 또한 HTTP 사이트와 HTTPS 사이트 모두에서 활용이 가능합니다.
위 내용은 Go에서 POST 요청의 업로드 진행 상황을 모니터링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!