Ruby を使用して HTTP 経由でバイナリ ファイルをダウンロードして保存するにはどうすればよいですか?
URLは ですhttp://somedomain.net/flv/sample/sample.flv
。
私は Windows プラットフォームを使用しており、外部プログラムを実行したくありません。
ベストアンサー1
最も簡単な方法は、プラットフォーム固有のソリューションです。
#!/usr/bin/env ruby
`wget http://somedomain.net/flv/sample/sample.flv`
おそらくあなたが探しているのは:
require 'net/http'
# Must be somedomain.net instead of somedomain.net/, otherwise, it will throw exception.
Net::HTTP.start("somedomain.net") do |http|
resp = http.get("/flv/sample/sample.flv")
open("sample.flv", "wb") do |file|
file.write(resp.body)
end
end
puts "Done."
編集: 変更しました。ありがとうございます。
編集2: ダウンロード中にファイルの一部を保存する解決策:
# instead of http.get
f = open('sample.flv')
begin
http.request_get('/sample.flv') do |resp|
resp.read_body do |segment|
f.write(segment)
end
end
ensure
f.close()
end