如何使用CGI :: Application获取上传文件的内容类型?

时间:2008-12-16 00:55:46

标签: perl cgi-application

我正在尝试使用CGI :: Application处理Perl程序中的上传文件。我需要获取上传文件的内容类型。根据我的阅读,以下内容应该有效,但不适合我:

my $filename = $q->param("file");
my $contenttype = $q->uploadInfo($filename)->{'Content-Type'};

事实证明,$q->uploadInfo($filename)会返回undef$q->uploadInfo("file")也是如此。

有什么想法吗?

谢谢!

2 个答案:

答案 0 :(得分:5)

您信任上传的内容为您提供了良好的内容类型吗?我只是将上传的文件保存到磁盘并执行:

chomp(my $mime_type = qx!file -i $uploaded!);
$mime_type =~ s/^.*?: //;
$mime_type =~ s/;.*//;

虽然您可以使用File :: Type,File :: MMagic或File :: MimeInfo。

答案 1 :(得分:1)

你在检查可能出错的地方吗?

我得到的确切代码工作正常,但看着它,它包含在$filename为undef以及$cgi->cgi_error()中的任何内容的测试中。我的记忆有些暗淡,但一定有这样的理由......