Maison >développement back-end >Golang >Comment résoudre l'erreur « Impossible d'utiliser m (type image.Image) comme type []byte » lors de l'enregistrement d'images à partir d'URL dans Go ?
Comment enregistrer une image à partir d'une URL dans un fichier : surmonter l'impossibilité d'utiliser m (type image.Image) comme type []erreur d'octet
Obtenir une image à partir d'une URL et l'enregistrer dans un fichier est une tâche courante dans de nombreuses applications de programmation. Dans Go, cela peut être réalisé en utilisant les packages http et image. Cependant, vous pouvez rencontrer une erreur lorsque vous tentez de transmettre le type image.Image à la fonction ioutil.WriteFile.
Le message d'erreur "Impossible d'utiliser m (type image.Image) comme type []byte dans la fonction argument", indique que le type image.Image ne peut pas être écrit directement dans un fichier. En effet, la fonction ioutil.WriteFile attend une tranche d'octets ([]byte) comme deuxième argument.
La bonne façon d'enregistrer une image dans un fichier dans cette situation est d'éviter complètement de décoder l'image. Au lieu de cela, vous pouvez directement copier le corps de la réponse, qui contient les données de l'image, dans un fichier.
package main import ( "fmt" "io" "log" "net/http" "os" ) func main() { url := "http://i.imgur.com/m1UIjW1.jpg" // don't worry about errors response, e := http.Get(url) if e != nil { log.Fatal(e) } 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!") }
Dans ce code modifié :
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!