植物のミカタから任意の画像データを取得し、main.goと同階層に画像ファイルを作成してみる。
package main import ( "io/ioutil" "log" "net/http" "os" ) func main() { var url string url = "https://saitodev.co/site/files10/P5080305.jpg" response, err := http.Get(url) if err != nil { log.Fatal(err) } defer response.Body.Close() body, err := ioutil.ReadAll(response.Body) if err != nil { log.Fatal(err) } file, err := os.Create("sample.jpg") if err != nil { log.Fatal(err) } defer file.Close() file.Write(body) }
var url stringで変数urlを用意。今回は、植物のミカタの任意の画像のアドレスをコピーし、urlに代入する。response, err := http.Get(url)のGetでurlの情報を取得する。Getの時は、responseという返り値にBodyというフィールドが紐づいているので、defer response.Body.Close()とする。
次にbody, err := ioutil.ReadAll(response.Body)の ioutil.ReadAllで、response.Bodyに入っているでデータを8bitの値(byte型)に変えて読み込む。file, err := os.Create("sample.jpg")のos.Createで、"sample.jpg"を作成する。os.Createの時も、Closeする決まりなので、defer file.Close()。最後にbodyに入っている情報をfileに書き込むので、file.Write(body)とする。下記のようにsample.jpgファイルができ、その中に画像が書き込まれる。
関連記事