我正在尝试在 Perl 中编写一个从网页生成 URL 列表的脚本,然后遍历 URL 列表并下载链接文件。
问题是生成的 URL 的链接看起来像
www.example.com/download.php?file=Li9OaW50ZW5kby9ORVMvVVNBLzEwIFlhcmQgRmlnaHQuemlw
当我将此链接放在浏览器中时,它知道真实的文件名(即cards.zip),我不知道如何使用Perl 获取它。
我怎样才能使用 Perl 链接的“真实”文件名?
检查标题,特别是Content-Disposition
.
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";
}