Heim >Backend-Entwicklung >Golang >Wie kann ich Bilder von URLs in Go effizient herunterladen und speichern?
Problem:
Beim Versuch, ein Bild von einer URL abzurufen und Wenn Sie es in einer Datei speichern, tritt ein Fehler auf: „M (Typ image.Image) kann nicht als Typ []Byte in der Funktion verwendet werden.“ Argument."
Analyse:
Der Originalcode wandelt das Bild in ein Go image.Image-Objekt (m) um, das eine speicherinterne Darstellung des Bildes ist. Allerdings erwartet die Funktion ioutil.WriteFile() ein Byte-Slice ([]Byte).
Lösung:
Anstatt das Bild in eine speicherinterne Darstellung zu konvertieren können wir den Antworttext mit der Funktion io.Copy direkt in die Ausgabedatei kopieren. Hier ist eine modifizierte Version des Codes:
package main import ( "fmt" "io" "log" "net/http" "os" ) func main() { url := "http://i.imgur.com/m1UIjW1.jpg" // don't worry about errors response, err := http.Get(url) if err != nil { log.Fatal(err) } defer response.Body.Close() //open a file for writing file, err := os.Create("/tmp/asdf.jpg") if err != nil { log.Fatal(err) } defer file.Close() // Use io.Copy to just dump the response body to the file. This supports huge files _, err = io.Copy(file, response.Body) if err != nil { log.Fatal(err) } fmt.Println("Success!") }
Erklärung:
Zusätzliche Hinweise:
Das obige ist der detaillierte Inhalt vonWie kann ich Bilder von URLs in Go effizient herunterladen und speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!