Perl,解析链接下载名称

时间:2012-01-09 00:43:48

标签: perl download resolve

我正在尝试在Perl中编写一个从网页生成URL列表的脚本,而不是遍历URL列表并下载链接文件。

问题是生成的URL的链接看起来像

  

www.example.com/download.php?file=Li9OaW50ZW5kby9ORVMvVVNBLzEwIFlhcmQgRmlnaHQuemlw

当我在浏览器中放置此链接时,它知道真正的文件名(即cards.zip),我不知道如何使用Perl获取它。

如何使用Perl链接的“真实”文件名?

2 个答案:

答案 0 :(得分:3)

检查标题,特别是Content-Disposition

答案 1 :(得分:2)

Amadan没错,只显示我用来解决它的代码:

use LWP::UserAgent qw( );
use LWP::Simple;
$url  = 'http://www.example.com/download.php?file=Li9OaW50ZW5kby9ORVMvVVNBLzNEIEJhdHRsZXMgb2YgV29ybGQgUnVubmVyLnppcA==';

#get file name
my $ua = LWP::UserAgent->new();
$cnt = %{%{$ua->head( $url )}->{'_headers'}}->{'content-disposition'};
$cnt =~ m/filename=(.*)/;
print "File name is: $1\n";

#Save File
my $status = getstore($url, $1);

if ( is_success($status) ){
    print "File $1 Saved Correctly !\n";
}else{
    print "Error saving $1!\n";
}