wp_check_filetype()
Получает расширение и MIME тип файла по переданному имени (пути) файла. Используется для проверки разрешен ли указанный тип файла к загрузке на сайт.
Во втором параметре можно указать разрешенные типы файлов. По умолчанию они получаются функцией get_allowed_mime_types().
Основа для: wp_check_filetype_and_ext(), wp_upload_bits()
1 раз — 0.0011148 сек (очень медленно) | 50000 раз — 1.85 сек (быстро) | PHP 7.3.12, WP 5.4.1
Хуков нет.
Возвращает
Массив
. Данные о типе файла:
array( 'ext' => 'png', // расширение (пр. 'jpg') 'type' => 'image/png', // mime тип (пр 'image/jpeg') )
Если тип файла не разрешен, то каждый элемент массива будет содержать false.
Использование
wp_check_filetype( $filename, $mimes )
- $filename(строка) (обязательный)
- Абсолютный путь к файлу: www/example.com/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 6.4.3
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' ); }