Я пытаюсь получить Mime-Type
для image-types
следующим образом:
if(!empty($_FILES['uploadfile']['name']) && $_FILES['uploadfile']['error'] == 0){ $file = $_FILES['uploadfile']['tmp_name']; $file_type = image_type_to_mime_type(exif_imagetype($file)); switch($file_type){ // Codes Here } }
Но он всегда дает ошибку Call to undefined function exif_imagetype()
. Что я здесь делаю неправильно?
Включите следующие расширения в php.ini
и перезапустите сервер.
расширение = php_mbstring.dll
расширение = php_exif.dll
Затем проверьте phpinfo()
чтобы узнать, phpinfo()
ли оно phpinfo()
/ Выкл.
Добавьте это в свой код, чтобы узнать, какая версия php у вас есть, потому что эта функция поддерживается только (PHP версия 4> = 4.3.0, PHP 5).
<?php phpinfo(); ?>
Он может быть не установлен, вы можете добавить эту часть кода, чтобы убедиться в этом:
<?php if (function_exists('exif_imagetype')) { echo "This function is installed"; } else { echo "It is not"; } ?>
Я думаю, что проблема заключается в конфигурации PHP и / или версии, например, в моем случае:
Мы знаем, что exif_imagetype()
принимает путь к файлу или ресурс и возвращает константу, такую как IMAGETYPE_GIF, и image_type_to_mime_type()
принимает это постоянное значение и возвращает строку 'image/gif'
, 'image/jpeg'
и т. Д. Это не работает (отсутствует function exif_imagetype), поэтому я обнаружил, что image_type_to_mime_type()
также может принимать целое число 1, 2, 3, 17 и т. д. в качестве входных данных, поэтому решена проблема с использованием getimagesize, которая возвращает целочисленное значение как тип mime:
function get_image_type ( $filename ) { $img = getimagesize( $filename ); if ( !empty( $img[2] ) ) return image_type_to_mime_type( $img[2] ); return false; } echo get_image_type( 'my_ugly_file.bmp' ); // returns image/x-ms-bmp echo get_image_type( 'path/pics/boobs.jpg' ); // returns image/jpeg