【问题标题】:How can I download a file using its generated filename with ruby and mechanize?如何使用 ruby​​ 和 mechanize 生成的文件名下载文件?
【发布时间】:2012-12-11 03:48:58
【问题描述】:

我正在尝试从使用 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

任何想法都将不胜感激!

【问题讨论】:

    标签: ruby mechanize-ruby


    【解决方案1】:

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

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

    如果是这样:

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

    【讨论】:

    • 或者它可能看起来像 "content-disposition"=>"attachment; filename=invoice1234.pdf"... 在这种情况下,快速的 f.header['content-disposition'].split('=')[1] 也可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    相关资源
    最近更新 更多