Gibt es eine Möglichkeit, eine große Datei mit Go herunterzuladen, bei der der Inhalt direkt in einer Datei gespeichert wird, anstatt alles im Speicher zu speichern, bevor er in eine Datei geschrieben wird? Da die Datei so groß ist, wird das Speichern des gesamten Speichers vor dem Schreiben in eine Datei den gesamten Speicher belegen.
106
io.Copy
32 KB (maximal) von der Eingabe gelesen und in die Ausgabe geschrieben und dann wiederholt werden. Mach dir also keine Sorgen um das Gedächtnis.client := http.Client{Timeout: 10 * time.Second,} client.Get("http://example.com/")
Eine aussagekräftigere Version von Steve Ms Antwort.
quelle
Die oben ausgewählte Antwort
io.Copy
lautet genau das, was Sie benötigen. Wenn Sie jedoch an zusätzlichen Funktionen wie der Wiederaufnahme fehlerhafter Downloads, der automatischen Benennung von Dateien, der Überprüfung der Prüfsumme oder der Überwachung des Fortschritts mehrerer Downloads interessiert sind, lesen Sie das Grab- Paket.quelle
Hier ist ein Beispiel. https://github.com/thbar/golang-playground/blob/master/download-files.go
Außerdem gebe ich dir einige Codes, die dir helfen könnten.
Code:
quelle
ioutil.ReadAll()
. Das ist in Ordnung, solange Sie mit winzigen Dateien arbeiten.