1. ホーム
  2. ruby

[解決済み] HTTPでバイナリファイルをダウンロードするにはどうしたらいいですか?

2022-06-19 13:09:11

質問

Rubyを使ってHTTPでバイナリファイルをダウンロードし、保存するにはどうしたらよいでしょうか?

URLは http://somedomain.net/flv/sample/sample.flv .

私は Windows プラットフォームを使用しており、外部プログラムを実行しないことを希望しています。

どのように解決するのですか?

最も簡単な方法は、プラットフォーム固有の解決策です。

 #!/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."

編集:変更しました。ありがとうございました。

Edit2: ダウンロード中にファイルの一部を保存するソリューションです。

# 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