Maison >développement back-end >Golang >Comment télécharger et enregistrer efficacement des images à partir d'URL dans Go ?
Problème :
Lors de la tentative de récupération d'une image à partir d'une URL et enregistrez-le dans un fichier, une erreur se produit : "impossible d'utiliser m (type image.Image) comme type []byte dans la fonction argument."
Analyse :
Le code d'origine convertit l'image en un objet Go image.Image (m) qui est une représentation en mémoire de l'image. Cependant, la fonction ioutil.WriteFile() attend une tranche d'octets ([]byte).
Solution :
Au lieu de convertir l'image en une représentation en mémoire , nous pouvons directement copier le corps de la réponse dans le fichier de sortie à l'aide de la fonction io.Copy. Voici une version modifiée du code :
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!") }
Explication :
Remarques supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!