2010-12-05 15 views
16

Bazı dosyaların indirilmesini kolaylaştırmak için Mechanize kullanıyorum. Şu anda benim komut WWW'yi kullanma: Bir dosyayı diske yüklemeden diske yüklemek için önce klasöre yükleyin

agent.get('http://example.com/foo').save_as 'a_file_name' 

Ancak bu diske atmadan önce belleğe tam dosyasını indirir ... aslında dosyaları indirmek için aşağıdaki satırı kullanır. Bu davranışı nasıl atlatıyorsunuz ve doğrudan diske indiriyorsunuz? WWW: Mechanize'den başka bir şey kullanmam gerekirse, WWW: Mechanize'in çerezlerini nasıl kullanacağım?

+0

Lütfen "Mechanize :: File" sınıfının büyük dosyalar için uygun olmadığını unutmayın. . Bu durumlarda, içeriği küçük parçalar halinde diske yüklediğinden, 'Mechanize :: Download' sınıfını kullanmalıdır. Daha fazla bilgi için [burada] (http://www.rubydoc.info/gems/mechanize/Mechanize/PluggableParser) ve [burada] (http://www.rubydoc.info/gems/mechanize/Mechanize/Download) kontrol edin. – pierrebonbon

cevap

36

Ne gerçekten istediğiniz makineleştirmek geçerli:: İşte

saptadığı tüm PDF dosyalarını kaydeder bir örnektir

require 'mechanize' 

agent = Mechanize.new 
agent.pluggable_parser.default = Mechanize::Download 
agent.get('http://example.com/foo').save('a_file_name') 
+0

Ben sadece Mekanize: FileSaver yerine Dosya: FileSaver vardı tam olarak senin çözüm kullandım eklemek istiyorum. Ve bu işe yaramadı => Dosyalar diske kaydedilir, ancak içeriği olmadan. Ben sadece indir ile değiştirdim ve tüm mükemmel :) Teşekkürler – Mik378

+3

Dosya nerede kaydedilir? – carbonr

+1

@carbonr with agent.get (url) .save (File.join (dir, dosyaadı)) 'dosya belirttiğiniz dir kaydedilir. – bfcoder

İlgili konular