びくんびくんしながらコードを書く。

いしきひくい系エンジニアのらくがき帳

Goでhttp経由のダウンロードを行う

本記事は ディップ with 全部俺 AdventCalendar 24日目の記事です。

Goのプログラムを組んでてあれ?何だっけ?となったので備忘録的に記載します。

コンテンツをダウンロードする。

特段難しいことはありませんでした。
Getで取得し、OpenFileでファイルを開きWeiteで書くだけです。
※今回はサンプルのため、エラーハンドリングせずすべてreturnで返してしまいます。

func GetContentByURL(target string) {
    resp, err := http.Get(target)
    if err != nil {
        return
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        return
    }

    _, filename := path.Split(target)

    file, err := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY, 0666)
    if err != nil {
        return
    }
    defer file.Close()

    file.Write(body)
}

targetのファイル名をそのまま利用しているので、別名にしたい場合はその辺ハンドリングしてください。
また、今回はファイルがなければ作成するようにしています。 なければ作成、有れば追記の場合は os.O_APPEND をパイプでつなげれば良いです。

ResponseBody及びfileのCloseしわすれに注意しましょう。

以上