Как вы получаете тип содержимого загруженного файла, используя CGI::Application?

Я пытаюсь обработать загруженный файл в программе Perl, используя CGI::Application. Мне нужно получить тип содержимого загруженного файла. Из того, что я прочитал, должно работать следующее, но это не для меня:

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

Как выясняется, $q->uploadInfo($filename) возвращается undef, Так же $q->uploadInfo("file"),

Есть идеи?

Спасибо!

2 ответа

Решение

Вы доверяете тому, что загрузили, чтобы дать вам хороший тип контента? Я просто сохраняю загруженный файл на диск и делаю:

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

хотя вы можете использовать File::Type, File::MMagic или File::MimeInfo.

Вы проверяете что-нибудь, что могло пойти не так?

Я получил этот точный код для работы просто отлично, но, глядя на это, он обернут в тест на $filename быть undef, а также для чего-либо в $cgi->cgi_error(), Мои воспоминания немного тусклые, но для этого должна была быть причина...

Другие вопросы по тегам