如何使用ruby和mechanize生成的文件名下载文件?

时间:2012-12-11 03:48:58

标签: ruby mechanize-ruby

我正在尝试从使用CDN进行分发的网站下载文件。下载页面上的URL都以file.pdf结尾,但点击浏览器中的链接会导致下载带有描述性文件名的文件(例如'invoice1234.pdf')。显然,解析URL以获取文件名会导致每个文件都被命名为file.pdf - 我想使用与通过浏览器下载时使用的文件名相同的文件名。我的代码看起来像这样:

  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

任何想法都将不胜感激!

1 个答案:

答案 0 :(得分:2)

该文件名可能位于如下所示的标题中:

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

如果是这样的话:

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