2011-05-22 55 views

回答

2

和getimagesize()返回的MIME类型也 http://php.net/manual/en/function.getimagesize.php

<?php 
//png image called gif 
$image = 'temp.gif'; 
$size = getimagesize($image); 

if (isset($size['mime']) && $size[0]>0 && $size[1]>0) { 
    echo"Content-type: {$size['mime']}"; 
    //outputs Content-type: image/png 
} else { 
    echo"not an image"; 
} 

?> 
3

这里的另一种方式

<?php 
$info = getimagesize("image.gif"); 
$type = $info['mime']; 
?> 

但它会帮助,如果你可以说你的“安全”和什么样的意思到底是什么操纵你的想法。

1

你总是可以自己扫描文件的魔术字节和不是。我相信在PECL中有一堆方便的funcs,但是由于它们在目标托管上的可用性可能会有所不同,所以您可能希望采取艰难的方式。例如参见本 -

http://www.garykessler.net/library/file_sigs.html

- 文件签名(或魔法字节,或任何他们现在被称为)。您知道要接受哪种文件类型,因此只需扫描传入文件以获取一组签名。

另一个选项是允许PHP运行unix shell并使用带有相应标志的file命令来测试您的文件并根据实际文件内容获取真实的mime类型。