Wie können Sie Dateien als Stream in go hochladen?
Es gibt eine Reihe von Tutorials zum Posten von Dateien mithttp.Request
in go, aber fast immer fangen sie so an:
file, err := os.Open(path)
if err != nil {
return nil, err
}
fileContents, err := ioutil.ReadAll(file)
Was soll heißen, Sie lesen die gesamte Datei in den Speicher und konvertieren sie dann in einBuffer
und übergebe das in eine Anfrage, etwa so:
func send(client *http.Client, file *os.File, endpoint string) {
body := &bytes.Buffer{}
io.Copy(body, file)
req, _ := http.NewRequest("POST", endpoint, body)
resp, _ := client.Do(req)
}
Wenn Sie eine massive Datei veröffentlichen und vermeiden möchten, sie in den Speicher zu lesen, sondern die Datei in Stücken zu dämpfen ... wie würden Sie das tun?