wp_check_filetype() WP 2.0.4
Получает расширение и MIME тип файла по переданному имени (пути) файла. Используется для проверки разрешен ли указанный файл на сайте.
Во втором параметре можно указать разрешенные типы файлов. По умолчанию они получаются функцией get_allowed_mime_types().
1 раз — 0.0011148 сек (очень медленно) | 50000 раз — 1.85 сек (быстро) | PHP 7.3.12, WP 5.4.1
Хуков нет.
Возвращает
Массив. Данные о типе файла:
['ext'] - расширение (пр. 'jpg') ['type'] - mime тип (пр 'image/jpeg')
Если тип файла не разрешен, то каждый элемент массива будет содержать false.
Использование
wp_check_filetype( $filename, $mimes )
- $filename(строка) (обязательный)
- Абсолютный путь к файлу: www/site.ru/wp-content/uploads/file.png
- $mimes(массив)
- Массив названий разрешенных расширений и типов файлов. По умолчанию значения функции get_allowed_mime_types().
По умолчанию: null
Примеры
#1 Демонстрация работы функции
$filetype = wp_check_filetype( dirname(__FILE__) . '/image.jpg' ); echo $filetype['ext']; // выведет: jpg echo $filetype['type']; // выведет: image/jpeg
#2 Проверим разрешен ли файл на сайте
Для проверки получим данные файла:
$filetype = wp_check_filetype('image.jpg'); if( $filetype['ext'] ) echo 'Файл с расширением '. $filetype['ext'] .' разрешен'; else echo 'Файл с расширением '. $filetype['ext'] .' запрещен';
#3 Указание разрешенных типов файлов и проверка
Укажем разрешенные типы файлов в массиве и проверим файл:
$mimes = array( 'gif' => 'image/gif', 'png' => 'image/png', 'jpg|jpeg|jpe' => 'image/jpeg' ); $file = 'image.bmp'; $filetype = wp_check_filetype( $file, $mimes ); if( $filetype['ext'] ) echo 'разрешен'; else echo 'запрещен';
Список изменений
С версии 2.0.4 | Введена. |
Код wp_check_filetype() wp check filetype WP 5.6.2
function wp_check_filetype( $filename, $mimes = null ) {
if ( empty( $mimes ) ) {
$mimes = get_allowed_mime_types();
}
$type = false;
$ext = false;
foreach ( $mimes as $ext_preg => $mime_match ) {
$ext_preg = '!\.(' . $ext_preg . ')$!i';
if ( preg_match( $ext_preg, $filename, $ext_matches ) ) {
$type = $mime_match;
$ext = $ext_matches[1];
break;
}
}
return compact( 'ext', 'type' );
}