我正在使用 Goamz 包,并且可以使用一些幫助bucket.Multi來將 HTTP GET 響應(yīng)流式傳輸?shù)?S3。我將通過分塊 HTTP 下載 2 GB 以上的文件,我想將其直接流式傳輸?shù)?S3 存儲桶中??磥砦倚枰猺esp.Body用一些東西來包裝,以便我可以將 的實現(xiàn)傳遞s3.ReaderAtSeeker給multi.PutAll// set up s3auth, _ := aws.EnvAuth()s3Con := s3.New(auth, aws.USEast)bucket := s3Con.Bucket("bucket-name")// make http request to URLresp, err := http.Get(export_url)if err != nil { fmt.Printf("Get error %v\n", err) return}defer resp.Body.Close()// set up multi-part multi, err := bucket.InitMulti(s3Path, "text/plain", s3.Private, s3.Options{})if err != nil { fmt.Printf("InitMulti error %v\n", err) return}// Need struct that implements: s3.ReaderAtSeeker// type ReaderAtSeeker interface {// io.ReaderAt// io.ReadSeeker// }rs := // Question: what can i wrap `resp.Body` in?parts, err := multi.PutAll(rs, 5120)if err != nil { fmt.Printf("PutAll error %v\n", err) return}err = multi.Complete(parts)if err != nil { fmt.Printf("Complete error %v\n", err) return}目前,我在嘗試運行我的程序時收到以下(預(yù)期的)錯誤:./main.go:50: cannot use resp.Body (type io.ReadCloser) as type s3.ReaderAtSeeker in argument to multi.PutAll: io.ReadCloser does not implement s3.ReaderAtSeeker (missing ReadAt method)
Golang 分段上傳,帶有分塊的 `http.GET` 和 Goamz
慕運維8079593
2021-09-10 15:24:56