2012-12-11 50 views
2

我正在嘗試從使用CDN進行分發的網站下載文件。下載頁面上的URL都以file.pdf結尾,但單擊瀏覽器中的鏈接會導致下載帶有描述性文件名的文件(例如'invoice1234.pdf')。很明顯,解析URL來獲取文件名會導致每個文件被命名爲file.pdf - 我想使用通過瀏覽器下載時使用的相同文件名。我的代碼看起來像這樣:如何使用其生成的文件名使用ruby和機械化來下載文件?

filename = File.basename(download.href) 
    agent.pluggable_parser.default = Mechanize::Download 
    agent.get(mov_download_link.href).save("#{path}/#{filename}") 
    agent.pluggable_parser.default = Mechanize::File 

任何想法,將不勝感激!

回答

2

該文件名可能是看起來像這樣的標題:

{'content-disposition' => 'filename="invoice1234.pdf"'} 

如果是這樣的:

f = agent.get(mov_download_link.href) 
filename = f.header['content-disposition'][/"(.*)"/, 1] 
f.save("#{path}/#{filename}") 
+0

或者,它可能看起來像' 「內容處置」=>「附件;文件名= invoice1234.pdf「'...在這種情況下,快速的f.header ['content-disposition'] .span('=')[1]'也可以。 – poweratom