2

CDNを使用して配信するWebサイトからファイルをダウンロードしようとしています。ダウンロードページの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

任意のアイデアをいただければ幸いです!

4

1 に答える 1

2

そのファイル名は、おそらく次のようなヘッダーにあります。

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

もしそうなら:

f = agent.get(mov_download_link.href)
filename = f.header['content-disposition'][/"(.*)"/, 1]
f.save("#{path}/#{filename}")
于 2012-12-11T04:52:12.157 に答える