RubyのOpenURIは、実際の転送が開始される前に*コンテンツの長さを決定することができますcontent_length_proc
オプションを提供します。ルビー:コンテンツの長さに基づいてOpenURIを中止
open(url, :content_length_proc => lambda { |content_length|
puts "Content Length: #{content_length}"
}) { |data|
# data.meta, data.read etc.
}
がいっぱいこのprocが実際のを中止するための方法は、あります検索?
*私は、これは信頼できるものではない知っています - しかし、それは私の場合には、単純なヒューリスティックには十分だ
FWIWは、 'content-length'は信頼できません。信頼できるアプローチは ':progress_proc'です。これは、新しいチャンクがネットから引き出されるたびに合計バイトを報告します。ダウンロードされた実際のバイト数に基づいてデータが多すぎると、中止できます。 – Dan