2009-03-16 8 views
6

Poszukuję najlepszych (możliwych w większości instalacji PHP 5.2 i nadal aktywnie rozwijanych) sposobów wykrycia typu MIME plików w PHP.Wykrywanie typu MIME w PHP

Jestem świadomy metody mime_content_type() i rozszerzenia Fileinfo, jednak mime_content_type() jest niewiarygodne i przestarzałe, a Fileinfo nie wchodzi w "standardową" instalację PHP (5.2).

Czy mam jakieś inne opcje?

Odpowiedz

5

Czy zapoznałeś się z tym pakietem PEAR?

http://pear.php.net/package/MIME_Type

+0

Dzięki. To nie jest idealne, ponieważ tak naprawdę to tylko starają się użyć dwóch metod, o których już wspomniałem, innego, który nie działa na wszystkich systemach (np. Windows), a następnie wraca do wykrywania przez rozszerzenie, ale wygląda na moją najlepszą opcję obecnie. –

0

Można zrobić subrequest do tego serwera są uruchomione na, a następnie analizować nagłówek, aby uzyskać mim wpisać w ten sposób. Ponieważ jest to powolne, użyj curl, aby nagłówki nie były pełne. Jest to ważne, jeśli patrzysz na duże pliki.

Jeśli używasz Apache i używasz php jako modułu, spójrz na funkcję WIRTUAL. jest to szybszy sposób na wykonanie podpowiadania niż użycie curl.

W przeciwnym razie można wyszukać typ MIME według rozszerzenia. To sprawi, że wszystkie dobrze nazwane pliki będą działać.

11

(lol przykro Uświadomiłem sobie ten został poproszony miesięcy temu, kiedy kończył się. No cóż. Równie dobrze można dodać to ...)

Jeśli jest to serwer * nix można użyć plik poleceń.

file -bi <filepath> 

Musisz użyć "exec" w PHP, aby to zrobić, tak myślę? Jestem nowym do PHP, więc nie zacytować mnie na to, ale ...

$content_type = exec("file -bi " . escapeshellarg($filepath)); 

Nie testowałem go więc może trzeba uciec ciąg ścieżki i formatować dane wyjściowe.

Dunno, jeśli będzie to bardziej niezawodne niż inne metody.

+2

Używam file -b --mime-type $ filename, ale dobra odpowiedź! – icco

+0

dziękuję dziękuję dziękuję !!!! – Kama

Powiązane problemy