finfo_file()为某些图像返回错误的mime类型?

时间:2014-07-25 03:07:50

标签: php file-upload mime-types file-type

我允许在我的网站上传图片并需要获取上传文件的文件类型,以便我可以查看该类型是否已列入白名单并允许上传。

我一直在使用finfo_file()这样做,但它似乎并不适用于所有情况。这是我的代码:

// get the mime type
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime  = finfo_file($finfo, $filePath);
echo $mime;

http://ecx.images-amazon.com/images/I/41q8koaxM0L.jpg

尝试在上面的图片上运行上面的代码,当它显然是JPG文件时,它会说MIME类型为application/octet-stream

为什么finfo_file()无法使用测试图像?如何解决问题,以便我可以准确地获取文件类型?

1 个答案:

答案 0 :(得分:2)

或者,您也可以将exif_imagetype()image_type_to_mime_type()结合使用。例如:

function get_mime($url) {
    $image_type = exif_imagetype($url);
    return image_type_to_mime_type($image_type);
}

echo get_mime('http://ecx.images-amazon.com/images/I/41q8koaxM0L.jpg'); // image/jpeg