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

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

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

Как оказалось, $q->uploadInfo($filename) возвращает undef. Так же, как и $q->uploadInfo("file").

Есть идеи?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 16 декабря 2008

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

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

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

1 голос
/ 16 декабря 2008

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

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

...