Rubyでのファイルのダウンロード
code:ruby
require "open-uri"
ただ、これだとファイルの全体が一回メモリーに乗るので、大きいファイルではやりたくない。そういう時はちょっとずつメモリーに読み込んでファイルに書き出していくようにする。
Net::HTTP
code:net-http.rb
require "net/http"
require "uri"
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
http.start do |http|
File.open "./downloaded/file", "wb" do |file|
http.request_get uri, headers do |response|
response.read_body do |chunk|
file.write chunk
end
end
end
end
Datasets::Downloader
code:downloader.rb
require "datasets"
require "pathname"
require "uri"
file = Pathname("./downloaded/file")
Datasets::Downloader.new(uri).download file
途中で接続切れても、続きからのダウンロードに対応していて便利。