通过perl Mechanize获取有关文件附件的信息

时间:2016-12-20 17:34:29

标签: perl mechanize

背景

我正在网络论坛上试验Mechanize。该论坛在其主题中有一些文件附件。附件可以是各种媒体类型。每个附件都有一个指向名为“attachment.php?”的服务器端程序的链接。以及标识文件的唯一ID。当您在普通浏览器中访问它时,将返回一个文件,浏览器将决定如何处理它。如果是图像,则文件显示在浏览器窗口中,标题栏设置为文件名。如果是另一种类型的文件,浏览器会询问您是否要下载文件(并自动将文件名设置为文件名)。

问题

我的问题是如何使用Mechanize探索此类文件附件的详细信息,以便确定文件类型和文件名? 我已经使用我的程序成功下载了一个文件,但我必须告诉Mechanize文件名应该是什么。我宁愿保留原始文件名,但要做到这一点,我必须能够以某种方式发现它。我知道可以这样做,因为我的浏览器能够确定文件类型和文件名。 作为次要目标,我还想查询文件的大小,如果可能的话。

我希望我的问题有道理,并提前感谢任何花时间回答的人。

1 个答案:

答案 0 :(得分:1)

要检查文件类型,必须使用$mech->res()。它返回一个HTTP::Response对象,该类提供filename方法。

示例:

foreach (@media)
{   
    print "Fetching " . $_->url() . "\n";
    $m->get($_);
    my $res = $m->res();
    if($res->is_success)
    {
        my $filename = $res->filename();
        print "$filename\n";
    }
}