php проверить является ли файл изображением
exif_imagetype
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
exif_imagetype — Determine the type of an image
Описание
exif_imagetype() считывает начальные байты изображения и проверяет их сигнатуру.
Список параметров
filename Изображение, тип которого требуется определить.
Возвращаемые значения
Следующие определённые константы представляют возможные возвращаемые значения функции exif_imagetype() :
Значение | Константа |
---|---|
1 | IMAGETYPE_GIF |
2 | IMAGETYPE_JPEG |
3 | IMAGETYPE_PNG |
4 | IMAGETYPE_SWF |
5 | IMAGETYPE_PSD |
6 | IMAGETYPE_BMP |
7 | IMAGETYPE_TIFF_II (порядок байт intel) |
8 | IMAGETYPE_TIFF_MM (порядок байт motorola) |
9 | IMAGETYPE_JPC |
10 | IMAGETYPE_JP2 |
11 | IMAGETYPE_JPX |
12 | IMAGETYPE_JB2 |
13 | IMAGETYPE_SWC |
14 | IMAGETYPE_IFF |
15 | IMAGETYPE_WBMP |
16 | IMAGETYPE_XBM |
17 | IMAGETYPE_ICO |
18 | IMAGETYPE_WEBP |
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
exif_imagetype — Определение типа изображения
Описание
exif_imagetype() считывает начальные байты изображения и проверяет их сигнатуру.
Список параметров
filename Изображение, тип которого требуется определить.
Возвращаемые значения
Список изменений
Версия | Описание |
---|---|
5.3.0 | Добавлена поддержка иконок. |
Предопределенные константы
Следующие определенные константы представляют возможные возвращаемые значения функции exif_imagetype() :
Значение | Константа |
---|---|
1 | IMAGETYPE_GIF |
2 | IMAGETYPE_JPEG |
3 | IMAGETYPE_PNG |
4 | IMAGETYPE_SWF |
5 | IMAGETYPE_PSD |
6 | IMAGETYPE_BMP |
7 | IMAGETYPE_TIFF_II (порядок байт intel) |
8 | IMAGETYPE_TIFF_MM (порядок байт motorola) |
9 | IMAGETYPE_JPC |
10 | IMAGETYPE_JP2 |
11 | IMAGETYPE_JPX |
12 | IMAGETYPE_JB2 |
13 | IMAGETYPE_SWC |
14 | IMAGETYPE_IFF |
15 | IMAGETYPE_WBMP |
16 | IMAGETYPE_XBM |
17 | IMAGETYPE_ICO |
Примеры
Пример #1 Пример использования exif_imagetype()
Смотрите также
PHP: как проверить, существует ли файл изображения?
Мне нужно посмотреть, существует ли определенное изображение на моем cdn.
Я пробовал следующее, И это не работает:
даже если изображение существует или не существует, он всегда говорит «файл существует». Я не уверен, почему это не работает.
18 ответов:
вам нужно имя файла в кавычках по крайней мере (как строка):
Это не сработало для меня. Как я это сделал с помощью getimagesize.
обратите внимание, что ‘ @ ‘ будет означать, что если изображение не существует (в этом случае функция обычно выдает ошибку: getimagesize(http://www.mydomain.com/images/filename.png) [function.getimagesize]: failed ) он вернет false.
Ну file_exists не говорит, Если файл существует, он говорит, если пути. ⚡ ⚡ ⚡ ⚡ ⚡ ⚡ ⚡
так, чтобы проверить, если это файл, то вы должны использовать is_file вместе с file_exists чтобы узнать, действительно ли есть файл позади пути, в противном случае file_exists вернутся true для любого существующего пути.
вот функция, которую я использую :
вещь, которую вы должны понять в первую очередь:у вас нет файлов.
Файл является предметом файловой системы, но вы делаете свой запрос с помощью протокола HTTP, который не поддерживает никаких файлов, кроме URL-адресов.
Итак, вы должны запросить несуществующий файл с помощью браузера и посмотреть код ответа. если это не 404, вы не можете использовать какие-либо обертки, чтобы увидеть, существует ли файл, и вам нужно запросить свой cdn, используя какой-либо другой протокол, например FTP
вот самый простой способ проверить, существует ли файл:
Если файл находится в вашем локальном домене, вам не нужно ставить полный URL. Только путь к файлу. Если файл находится в другом каталоге, то вам необходимо в начале пути «.»
часто «.»остановлено, что приведет к тому, что файл будет отображаться как несуществующий, когда он на самом деле это делает.
is_file возвращает true для (регулярные) файлы:
возвращает правда если filename существует и является обычным файлом, ложные в противном случае.
file_exists возвращает true для обоих файлов и каталогов:
возвращает правда если файл или каталог, заданный параметром filename, существует; ложные в противном случае.
Примечание:проверить тоже этот вопрос stackoverflow для получения дополнительной информации по этой теме.
вы должны использовать абсолютный путь, чтобы увидеть, если файл существует.
если вы пишете для CMS или PHP framework, то, насколько я знаю, все они определили константу для корневого пути документа.
например, WordPress использует ABSPATH, который можно использовать глобально для работы с файлами на сервере, используя ваш код, а также url-адрес сайта.
Я собираюсь лишнюю милю здесь :). Потому что этот код не понадобится много обслуживание и довольно солидное, я бы написал его с помощью стенографии, если заявление:
Стенография, если заявление объяснил:
вы можете использовать cURL. Вы можете получить cURL, чтобы дать вам только заголовки, а не тело, что может сделать его быстрее. Плохой домен всегда может занять некоторое время, потому что вы будете ждать запроса на тайм-аут; вы, вероятно, можете изменить длину тайм-аута с помощью cURL.
PHP, как я могу проверить, является ли файл mp3 или файлом изображения?
как я могу проверить, является ли файл mp3 файлом или файлом изображения, кроме проверки каждого возможного расширения?
ОТВЕТЫ
Ответ 1
Ответ 2
Родные способы получения типа mimetype:
Для PHP = 5.3 используйте finfo_fopen()
Альтернативы для получения MimeType: exif_imagetype и getimagesize, но они полагаются на наличие соответствующих библиотек. Кроме того, они, скорее всего, просто вернут изображения mimetypes, а не весь список, указанный в magic.mime.
Если вы не хотите беспокоиться о том, что доступно в вашей системе, просто оберните все четыре функции в прокси-метод, который делегирует вызов функции тому, что доступно, например.
Ответ 3
Чтобы найти тип mime файла, я использую следующую функцию-обертку:
Ответ 4
Или лучше использовать finfo_file() другой способ устарел.
Ответ 5
getimageinfo лучше всего искать изображения. Проверьте, является ли тип возврата ложным.
Ответ 6
Вы можете использовать модуль FileInfo, который встроен в PHP с 5.3. Если вы используете версию PHP меньше PHP 5.3, вы можете установить ее как расширение PECL:
После установки функция finfo_file вернет информацию о файле.
Ответ 7
Вы можете использовать finfo следующим образом:
Затем просто передайте тип файла mime в оператор switch, например:
Ответ 8
Эта функция проверяет, является ли файл изображением на основе расширения и mime и возвращает true, если это совместимое с браузером изображение.
Ответ 9
Для изображений я использую:
Ответ 10
PHP: Как проверить, существует ли файл изображения?
Мне нужно увидеть, существует ли определенное изображение на моем cdn.
Я пробовал следующее и не работает:
Даже если изображение существует или не существует, оно всегда говорит “Файл существует”. Я не уверен, почему он не работает…
Вам нужно имя файла в кавычках как минимум (как строка):
Это не сработало для меня. То, как я это делал, это использовать getimagesize.
Обратите внимание, что “@” будет означать, что если изображение не существует (в этом случае функция обычно выдает ошибку: getimagesize(http://www.mydomain.com/images/filename.png) [function.getimagesize]: failed ), она вернет false.
Ну, file_exists не говорит, существует ли файл, он говорит, что существует путь. ⚡⚡⚡⚡⚡⚡⚡
Итак, чтобы проверить, является ли это файлом, вы должны использовать is_file вместе с file_exists чтобы узнать, действительно ли файл находится за ним, иначе file_exists вернет true для любого существующего пути.
Вот функция, которую я использую:
Попробуйте вот так:
Сначала вам нужно понять: у вас нет файлов.
Файл является объектом файловой системы, но вы делаете свой запрос с использованием протокола HTTP, который не поддерживает файлы, а URL-адреса.
Итак, вам нужно запросить неиспользуемый файл, используя ваш браузер, и посмотреть код ответа. если это не 404, вы не можете использовать какие-либо обертки, чтобы увидеть, существует ли файл, и вы должны запросить свой cdn, используя какой-либо другой протокол, например FTP
Вот простейший способ проверить, существует ли файл:
Если файл находится в вашем локальном домене, вам не нужно указывать полный URL. Только путь к файлу. Если файл находится в другом каталоге, тогда вам нужно указать путь с помощью..
Часто время “.”, что приведет к тому, что файл будет отображаться как не существующий, если это действительно так.
is_file возвращает true для (обычных) файлов:
Возвращает TRUE, если имя файла существует и является обычным файлом FALSE.
file_exists возвращает true для обоих файлов и каталогов:
Возвращает ИСТИНА, если файл или каталог указан по имени файла; ЛОЖЬ в противном случае.
Примечание: Также проверьте этот вопрос в стеке для получения дополнительной информации по этой теме.
Вы должны использовать абсолютный путь, чтобы увидеть, существует ли файл.
Если вы пишете для CMS или PHP framework, то насколько я знаю, все они определили константу для корневого пути документа.
Например, WordPress использует ABSPATH, который можно использовать глобально для работы с файлами на сервере, используя ваш код, а также URL сайта.
Я проделаю лишнюю милю здесь:). Поскольку этот код не нуждался бы в большом техническом обслуживании и довольно солидный, я бы написал его с сокращенным выражением if:
Обозначение сокращенного IF объяснено:
вы можете использовать cURL. Вы можете получить cURL только для того, чтобы дать вам заголовки, а не тело, которое могло бы сделать его быстрее. Плохой домен всегда может занять некоторое время, потому что вы будете ждать запроса на тайм-аут; вы, вероятно, можете изменить длину таймаута, используя cURL.
Вы можете использовать функцию file_get_contents для доступа к удаленным файлам. Подробнее см. http://php.net/manual/en/function.file-get-contents.php.
для обнаружения изображения.
Я обычно пишу это так:
file_exists($filepath) вернет истинный результат для каталога и полного пути к файлу, поэтому это не всегда решение, когда имя файла не передается.
is_file($filepath) вернет true только для полностью файловых путей