getimagesize () против finfo_file () точно так же для обнаружения типа пантомимы?

Эти функции выполняют одинаковые проверки для обнаружения файла MIME-типа? Есть ли какие-либо преимущества в выборе одного над другим (то есть с точки зрения надежности / безопасности)?

2

Решение

Они предназначены для разных целей, поэтому вы можете использовать их в определенной области.
Я предпочитаю использовать finfo для первой проверки надежности файла, если я не знаю его происхождение

getimagesize — получить размер изображения

Который также может собрать мета-сегмент для приложения JPG и предполагать обнаружить изображение пантомимы

А также

finfo_file — возвращает информацию о файле

Вы получите метаинформацию из файла

Если вы пометили 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

ОС другой стороны, я предлагаю вам использовать 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

Другие решения

ну, в принципе, есть два способа найти mime-типы файлов … один — mime_content_type, а другой — информация о файле …
Вы можете сослаться на URL ниже:

http://php.net/manual/en/function.finfo-file.php

http://php.net/manual/en/function.mime-content-type.php

mime_content_type устарел .. метод информации о файле предназначен для последних версий php … информация о файле требует, чтобы на сервере было включено расширение fileinfo …

0

По вопросам рекламы [email protected]