次のように_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
_で次の拡張機能を有効にして、サーバーを再起動します。
extension = php_mbstring.dll
extension = php_exif.dll
次にphpinfo()
をチェックして、オン/オフに設定されているかどうかを確認します
問題は、PHP=構成および/またはバージョン、たとえば、私の場合:
exif_imagetype()
はファイルパスまたはリソースを取り、IMAGETYPE_GIFのような定数を返し、image_type_to_mime_type()
はその定数値を取り、文字列_'image/gif'
_を返します。 _'image/jpeg'
_など。これは機能しません(関数exif_imagetypeがありません)。そのため、image_type_to_mime_type()
は整数1、2、3、17なども入力として使用できることがわかりました。整数値をMIMEタイプとして返すgetimagesizeを使用して問題を解決しました。
_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
_
この関数は(PHPバージョン4> = 4.3.0、PHP 5)でのみサポートされているため、使用しているphpのバージョンがわかるように、これをコードに追加します。
<?php
phpinfo();
?>
インストールされていない可能性があります。コードのこの部分を追加して、次のことを確認できます。
<?php
if (function_exists('exif_imagetype')) {
echo "This function is installed";
} else {
echo "It is not";
}
?>