I am trying to build a file downloader with the RubyGem Curb. (Look at This Question.)
I am trying to download a zip file and then with the class File I am trying to actually make the file so that I can double click it in Finder (I am on OS X). How would I go about to convert this "Curl'ed" body to a zip-file.
require 'rubygems'
require 'curb'
class Download
def start
curl = Curl::Easy.new('http://wordpress.org/latest.zip')
curl.perform
curl.on_body {
|d| f = File.new('test.zip', 'w') {|f| f.write d}
}
end
end
dl = Download.new
dl.start
I am not getting any error, neither can I find any file. I have tried absolute paths with no difference.
You're adding the on_body
event after calling perform
, which transfers the body. If you move the event declaration to before the perform
call, this should work.
I am using ruby 2.0
and my code is:
curl = Curl::Easy.new('http://somepage.cz/index.html')
curl.on_body do |d|
f = File.open('output_file.html', 'w') {|f| f.write(d)}
end
curl.perform
I had to change File.new
to File.open
without this it didn't worked.
Moving curl.perfom
on the end does helped me.
来源:https://stackoverflow.com/questions/5383143/zipfile-download-through-curl-to-an-actual-zip-file-in-your-file-structure