Люди рекомендуют с помощью getimagesize()
but the documentation гласит:
Внимание Эта функция ожидает имя файла является допустимым файлом изображения. Если предоставляется файл без изображения, то он может быть неправильно обнаружен как изображение , и функция вернется успешно, но массив может содержать бессмысленные значения.
Не используйте getimagesize()
, чтобы проверить, является ли данный файл действительным. Используйте специально разработанное решение, такое как расширение Fileinfo.
Соответствующая функция в расширении Fileinfo является finfo_file()
:
string finfo_file (resource $finfo , string $file_name = NULL
[, int $options = FILEINFO_NONE [, resource $context = NULL ]])
Возвращает текстовое описание содержимого file_name
аргумента, или FALSE, , если произошла ошибка.
значения Пример возврата даны: text/html
, image/gif
, application/vnd.ms-excel
Однако комментарии на официальной странице документации предупреждают, что это не следует полагаться на для проверки либо.
Прежде всего, нет проверки расширений jpeg, jpe, jif и jfif. Хотя это редкость, они все еще используются некоторыми людьми (в основном, jpeg). Более того, расширение не обязательно отражает формат изображения, и загрузка файла PHP с расширением JPG может быть фатальным, если сайт уязвим для локального включения файла. – 2014-02-03 18:25:11