2012-01-09 89 views
2

我想在Perl中编写一个脚本,用于从网页生成URL列表,而不是通过URL列表并下载链接的文件。Perl,解析链接下载名称

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

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

当我把这个链接在浏览器,它知道真正的文件名(即cards.zip),我不知道如何使用Perl。

我怎样才能使用Perl链接的'真'文件名?

回答

3

检查标题,特别是Content-Disposition

+0

感谢您的快速回复。 – james 2012-01-09 12:37:29

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"; 
}