WP_CHECK_FILETYPE() – функция определения типа файла в WordPress

# WP_CHECK_FILETYPE() │ WP 2.0.4

Функция wp_check_filetype() позволяет определить тип файла по его имени. Также можно задать массив расширений файлов, если это необходимо.

### Используется в:
- wp_check_filetype_and_ext()
- wp_upload_bits()

### Время работы:
- 1 раз — 0.0011148 сек (очень медленно)
- 50000 раз — 1.85 сек (быстро)

### Версия PHP и WordPress:
- PHP 7.3.12
- WP 5.4.1

### Нет хуков.

## Возвращаемое значение

Функция возвращает массив, который содержит следующие значения:
- ext — расширение файла.
- type — MIME-тип файла.

## Применение

```php
wp_check_filetype( $filename, $mimes );

Параметры:

  • $filename (строка) (обязательный) — имя файла или путь к файлу.
  • $mimes (массив строк|null) — массив допустимых MIME-типов, ключи которого являются регулярными выражениями для расширений файлов. По умолчанию: результат get_allowed_mime_types().

Примеры

Пример 1: Определение типа файла

$file = dirname(__FILE__) . '/image.jpg';
$filetype = wp_check_filetype( $file );

echo $filetype['ext'];  // вывод: jpg
echo $filetype['type']; // вывод: image/jpeg

Пример 2: Проверка разрешённых расширений файла

Чтобы проверить, разрешено ли использовать файл, получим его данные (это не проверяет реальный MIME-тип файла):

$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 — функция была введена.

Код функции

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

Связанные функции

  • download_url()
  • media_handle_sideload()
  • media_handle_upload()
  • media_sideload_image()
  • size_format()
  • wp_check_filetype_and_ext()
  • wp_convert_hr_to_bytes()
  • wp_get_upload_dir()
  • wp_handle_sideload()
  • wp_handle_upload()
  • wp_max_upload_size()
  • wp_upload_bits()

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *