我正在尝试使用CGI :: Application处理Perl程序中的上传文件。我需要获取上传文件的内容类型。根据我的阅读,以下内容应该有效,但不适合我:
my $filename = $q->param("file");
my $contenttype = $q->uploadInfo($filename)->{'Content-Type'};
事实证明,$q->uploadInfo($filename)
会返回undef
。 $q->uploadInfo("file")
也是如此。
有什么想法吗?
谢谢!
答案 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()
中的任何内容的测试中。我的记忆有些暗淡,但一定有这样的理由......