在php中获取文件mime类型的最佳方法

时间:2011-05-22 22:44:02

标签: php security file-upload

获取文件的mime类型的最佳和msit安全方法是什么?我已经发现了这个:

http://de3.php.net/manual/de/ref.fileinfo.php

但是fileinfo()似乎很容易操作。有没有更好的方法来获取文件mime类型? 顺便说一句,我需要它用于图像文件。

3 个答案:

答案 0 :(得分:3)

这是另一种方式

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

但如果您能够准确地说出“安全”的含义以及您想要采取何种操作,那将会有所帮助。

答案 1 :(得分: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";
}

?>

答案 2 :(得分:1)

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

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

- 用于文件签名(或魔术字节,或现在称为它们的任何内容)。您知道要接受哪些文件类型,因此只需扫描传入文件以获取签名集。

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