Rubyで画像ファイルをダウンロードする

少しばかり、やることがあったのでやってみた。
煩悩丸出しですいませんw

HTTP Responseのbodyを利用する


直感的ではないけど、素直なやりかた

  1. 書き込みモードでファイルを開く
  2. urlで接続したbodyデータをファイルに書き込む
1
2
3
4
5
6
def save_file(url)
   filename = File.basename(url)
   open(filename, "wb") do  |file|
          file.puts Net::HTTP.get_response(URI.parse(url)).body
   end
end

open-uriを使用する方法


説明しやすいのでこっちのほうがわかりやすいかもしれない。

  1. 書き込みモードでファイルを開く
  2. 書き込みモードで開いたファイルに対して、urlで接続したデータを書き込む
1
2
3
4
5
6
7
8
def save_file(url)
    filename = File.basename(url)
    open(filename, 'wb') do |file|
        open(url) do |data|
            file.write(data.read)
      end
    end
end

真面目にやるなら、レスポンスコードもチェックしたほうがいいかもしれないですね