这些函数是否进行相同的检查以检测文件的mime类型?选择其中一个(即可靠性/安全性)是否有任何好处?
答案 0 :(得分:1)
它们用于不同目的,因此您可以使用它们的特定范围。
如果我不知道其来源,我更喜欢使用finfo
来首次检查文件的可靠性
getimagesize - 获取图片大小
哪个也可以收集JPG APP的元段,推测来检测图像mime
和
finfo_file - 返回有关文件的信息
将从文件中获取元信息
A s标记为GD,您可能只与图片进行交互(?)。所以你可以使用getimagesize()
,它似乎返回独立于其扩展名的mime类型的文件,在安全性上是+1,但可能受到PHP支持的图像类型的限制。
我的PHP 5.6.4有:
[IMAGETYPE_GIF] => 1
[IMAGETYPE_JPEG] => 2
[IMAGETYPE_PNG] => 3
[IMAGETYPE_SWF] => 4
[IMAGETYPE_PSD] => 5
[IMAGETYPE_BMP] => 6
[IMAGETYPE_TIFF_II] => 7
[IMAGETYPE_TIFF_MM] => 8
[IMAGETYPE_JPC] => 9
[IMAGETYPE_JP2] => 10
[IMAGETYPE_JPX] => 11
[IMAGETYPE_JB2] => 12
[IMAGETYPE_SWC] => 13
[IMAGETYPE_IFF] => 14
[IMAGETYPE_WBMP] => 15
[IMAGETYPE_JPEG2000] => 9
[IMAGETYPE_XBM] => 16
[IMAGETYPE_ICO] => 17
[IMAGETYPE_UNKNOWN] => 0
[IMAGETYPE_COUNT] => 18
O 另一方面,我建议您使用finfo
来收集文件的真实元信息。
finfo
除了标题之外没有阅读其他内容,getimagesize
也可以返回一些标记以及额外信息(额外计算),图片特定信息。
L 检查:
有这个简单的非标准功能:
function displayInfo($path, $info = FILEINFO_MIME_TYPE ) {
$imageinfo = array();
$getimagesize = array();
$finfo = new finfo($info);
$finfo_mt = $finfo->file($path);
print_r(getimagesize($path, $imageinfo));
print_r($imageinfo);
print_r($finfo_mt);
}
您可以使用$ info = FILEINFO_MIME返回安全读取文件的类型和编码。所以,
display('file.php');
将输出
Array
(
)
text/x-php
display('image.png.hide');
和
display('image.png');
将输出
Array
(
[0] => 31
[1] => 31
[2] => 3
[3] => width="31" height="31"
[bits] => 8
[mime] => image/png
)
Array
(
)
image/png
和,
display('image.jpg');
将输出
Array
(
[0] => 206
[1] => 206
[2] => 2
[3] => width="206" height="206"
[bits] => 8
[channels] => 3
[mime] => image/jpeg
)
Array
(
[APP0] => JFIF
[APP13] => Photoshop 3.08BIMgldeLs_Kr6L1Vvu73FGOs(bFBMD01000ac1030000b1060000ad0b00006f0c0000800d0000fe11000011180000bf180000c8190000ef1a0000d2240000
[APP2] => [REMOVED UTF CHARS FOR stackoverflow]
)
image/jpeg
希望能够指出你的问题。
答案 1 :(得分:-1)
基本上有两种方法可以找到文件的mime类型...一个是mime_content_type,另一个是文件信息...... 你可以参考下面的网址:
http://php.net/manual/en/function.finfo-file.php
http://php.net/manual/en/function.mime-content-type.php
mime_content_type现已弃用..文件信息方法适用于最新的php版本...文件信息要求在服务器上启用fileinfo扩展...