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.9.4
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' );
}