wp_handle_upload()

Обертка для _wp_handle_upload()
Функция WordPress
INT 2.0.0
WordPress Icon

Описание функции

Функция wp_handle_upload() является оберткой для функции _wp_handle_upload(). Она используется для обработки загруженных файлов в WordPress. Функция принимает массив с информацией о загружаемом файле, массив с настройками и дополнительный параметр времени. Она выполняет проверку и обработку файла, сохраняет его на сервере и возвращает массив с результатами обработки.

Использование

wp_handle_upload( array $file, array|false $overrides = false, string $time = null ): array

Функция wp_handle_upload() принимает три параметра:

  • $file (обязательный) — ссылка на элемент массива $_FILES, содержащий информацию о загружаемом файле. Функцию нужно вызывать отдельно для каждого загруженного файла.
  • $overrides (необязательный) — ассоциативный массив с настройками, позволяющий переопределить значения по умолчанию. См. функцию _wp_handle_upload() для принимаемых значений.
  • $time (необязательный) — время в формате «yyyy/mm». Значение по умолчанию — null.
  • $file (массив, обязательный) — Ссылка на один элемент массива $_FILES. Вызывайте функцию для каждого загруженного файла.
  • name (строка) — Оригинальное имя файла на клиентской машине.
  • type (строка) — MIME-тип файла, если браузер предоставил эту информацию.
  • tmp_name (строка) — Временное имя файла, в котором загруженный файл был сохранен на сервере.
  • size (целое число) — Размер загруженного файла в байтах.
  • error (целое число) — Код ошибки, связанный с загрузкой файла.
  • $overrides (массив или логическое значение, необязательный) — Ассоциативный массив с настройками, позволяющий переопределить значения по умолчанию. См. функцию _wp_handle_upload() для принимаемых значений.
  • upload_error_handler (функция) — Функция, вызываемая при возникновении ошибки в процессе загрузки файла.
  • unique_filename_callback (функция) — Функция, вызываемая при определении уникального имени файла.
  • upload_error_strings (массив строк) — Строки, описывающие ошибку, указанную в $_FILES[{form field}]['error'].
  • test_form (логическое значение) — Проверять, что параметр $_POST['action'] соответствует ожидаемому значению.
  • test_size (логическое значение) — Проверять, что размер файла больше нуля байт.
  • test_type (логическое значение) — Проверять, что MIME-тип файла соответствует ожидаемому значению.
  • mimes (массив строк) — Массив разрешенных MIME-типов, сгруппированных по расширению файла. Значение по умолчанию — false.
  • $time (строка, необязательный) — Время в формате «yyyy/mm». Значение по умолчанию — null.

Функция возвращает массив с результатами обработки файла. См. функцию _wp_handle_upload() для возвращаемого значения.

<?php
$file = $_FILES['file']; // Получаем информацию о загружаемом файле
$overrides = array(
  'test_form' => false, // Отключаем проверку параметра $_POST['action']
  'test_size' => true, // Включаем проверку размера файла
  'test_type' => true, // Включаем проверку MIME-типа файла
  'mimes' => array( // Разрешаем только изображения
    'jpg|jpeg|jpe' => 'image/jpeg',
    'gif' => 'image/gif',
    'png' => 'image/png',
    'bmp' => 'image/bmp',
    'tif|tiff' => 'image/tiff'
  )
);
$result = wp_handle_upload($file, $overrides); // Обрабатываем загруженный файл
if ($result && !isset($result['error'])) {
  // Файл успешно загружен
  $file_url = $result['url']; // Получаем URL загруженного файла
  $file_type = $result['type']; // Получаем MIME-тип загруженного файла
  $file_size = $result['size']; // Получаем размер загруженного файла
  // Дальнейшая обработка файла...
} else {
  // Возникла ошибка при загрузке файла
  $error_message = isset($result['error']) ? $result['error'] : 'Unknown error';
  // Обработка ошибки...
}
?>

Примеры использования

Загрузка изображения на сервер


// Путь к файлу изображения
$image_path = $_FILES['image']['tmp_name'];
// Загрузка изображения на сервер
$upload = wp_handle_upload($image_path);

Сохранение загруженного файла


// Путь к файлу изображения
$image_path = $_FILES['image']['tmp_name'];
// Настройки для сохранения файла
$overrides = array(
    'test_form' => false,
    'test_size' => true,
    'test_type' => true,
    'mimes' => array(
        'jpg|jpeg|jpe' => 'image/jpeg',
        'gif' => 'image/gif',
        'png' => 'image/png',
    ),
);
// Сохранение загруженного файла
$upload = wp_handle_upload($image_path, $overrides);

Проверка размера файла и типа


// Путь к файлу изображения
$image_path = $_FILES['image']['tmp_name'];
// Настройки для проверки размера и типа файла
$overrides = array(
    'test_form' => false,
    'test_size' => true,
    'test_type' => true,
    'mimes' => array(
        'jpg|jpeg|jpe' => 'image/jpeg',
        'gif' => 'image/gif',
        'png' => 'image/png',
    ),
);
// Проверка размера и типа файла
$upload = wp_handle_upload($image_path, $overrides);

Обработка ошибок при загрузке


// Путь к файлу изображения
$image_path = $_FILES['image']['tmp_name'];
// Настройки для обработки ошибок
$overrides = array(
    'test_form' => false,
    'test_size' => true,
    'test_type' => true,
    'mimes' => array(
        'jpg|jpeg|jpe' => 'image/jpeg',
        'gif' => 'image/gif',
        'png' => 'image/png',
    ),
    'upload_error_handler' => 'my_custom_error_handler',
);
// Обработка ошибок при загрузке
$upload = wp_handle_upload($image_path, $overrides);
// Функция для обработки ошибок
function my_custom_error_handler($file, $message) {
    // Обработка ошибки
    echo "Ошибка при загрузке файла: " . $message;
}

Генерация уникального имени файла


// Путь к файлу изображения
$image_path = $_FILES['image']['tmp_name'];
// Настройки для генерации уникального имени файла
$overrides = array(
    'test_form' => false,
    'test_size' => true,
    'test_type' => true,
    'mimes' => array(
        'jpg|jpeg|jpe' => 'image/jpeg',
        'gif' => 'image/gif',
        'png' => 'image/png',
    ),
    'unique_filename_callback' => 'my_custom_unique_filename',
);
// Генерация уникального имени файла
$upload = wp_handle_upload($image_path, $overrides);
// Функция для генерации уникального имени файла
function my_custom_unique_filename($dir, $name, $ext) {
    // Генерация уникального имени файла
    $filename = md5(uniqid()) . $ext;
    // Возвращение уникального имени файла
    return $filename;
}

Вопросы и ответы

Как обрабатывать ошибки при загрузке файла?

Для обработки ошибок при загрузке файла в WordPress используется функция wp_handle_upload(). Она принимает несколько параметров, включая массив $file, который содержит информацию о загружаемом файле.

Если при загрузке файла произошла ошибка, то функция wp_handle_upload() вернет массив с информацией об ошибке. Для обработки этой ошибки можно использовать функцию wp_handle_upload_error(). Она принимает один параметр — код ошибки, и возвращает текстовое описание ошибки.


$file = $_FILES['file']; // Получаем информацию о загружаемом файле
$result = wp_handle_upload($file); // Загружаем файл и получаем результат
if (isset($result['error'])) {
    $error_message = wp_handle_upload_error($result['error']); // Обрабатываем ошибку
    echo $error_message;
}

Как проверить тип загружаемого файла?

Для проверки типа загружаемого файла в WordPress также используется функция wp_handle_upload(). Она принимает параметр $overrides, который позволяет указать допустимые типы файлов.

Если тип загружаемого файла не соответствует указанным допустимым типам, то функция wp_handle_upload() вернет массив с информацией об ошибке. Для проверки типа файла можно использовать функцию wp_check_filetype(). Она принимает один параметр — имя файла, и возвращает массив с информацией о типе файла.


$file = $_FILES['file']; // Получаем информацию о загружаемом файле
$allowed_types = array('image/jpeg', 'image/png'); // Допустимые типы файлов
$result = wp_handle_upload($file, array('mimes' => $allowed_types)); // Загружаем файл и проверяем тип
if (isset($result['error'])) {
    $error_message = wp_handle_upload_error($result['error']); // Обрабатываем ошибку
    echo $error_message;
} else {
    $file_type = wp_check_filetype($result['file']); // Проверяем тип файла
    if (!in_array($file_type['type'], $allowed_types)) {
        echo 'Недопустимый тип файла';
    }
}

Как проверить размер загружаемого файла?

Для проверки размера загружаемого файла в WordPress также используется функция wp_handle_upload(). Она принимает параметр $overrides, который позволяет указать максимальный размер файла.

Если размер загружаемого файла превышает указанный максимальный размер, то функция wp_handle_upload() вернет массив с информацией об ошибке. Для проверки размера файла можно использовать функцию wp_max_upload_size(). Она не принимает параметров и возвращает максимальный размер файла в байтах.


$file = $_FILES['file']; // Получаем информацию о загружаемом файле
$max_size = wp_max_upload_size(); // Максимальный размер файла
$result = wp_handle_upload($file, array('test_size' => true)); // Загружаем файл и проверяем размер
if (isset($result['error'])) {
    $error_message = wp_handle_upload_error($result['error']); // Обрабатываем ошибку
    echo $error_message;
} else {
    if ($file['size'] > $max_size) {
        echo 'Превышен максимальный размер файла';
    }
}

Как изменить имя загружаемого файла?

Для изменения имени загружаемого файла в функции wp_handle_upload() можно использовать параметр $overrides. Этот параметр принимает ассоциативный массив, в котором можно указать новое имя файла.

Пример использования:


$overrides = array(
    'test_form' => false,
    'unique_filename_callback' => 'my_unique_filename_callback'
);
function my_unique_filename_callback($dir, $name, $ext){
    $new_name = 'new_filename' . $ext;
    return $new_name;
}
wp_handle_upload($file, $overrides);

Как использовать свою функцию для обработки ошибок при загрузке файла?

Для использования своей функции для обработки ошибок при загрузке файла в функции wp_handle_upload() можно использовать параметр $overrides. Этот параметр принимает ассоциативный массив, в котором можно указать свою функцию для обработки ошибок.

Пример использования:


$overrides = array(
    'test_form' => false,
    'upload_error_handler' => 'my_upload_error_handler'
);
function my_upload_error_handler($file, $message){
    // Ваш код обработки ошибки
}
wp_handle_upload($file, $overrides);

Как использовать свою функцию для генерации уникального имени файла?

Для использования своей функции для генерации уникального имени файла в функции wp_handle_upload() можно использовать параметр $overrides. Этот параметр принимает ассоциативный массив, в котором можно указать свою функцию для генерации уникального имени файла.

Пример использования:


$overrides = array(
    'test_form' => false,
    'unique_filename_callback' => 'my_unique_filename_callback'
);
function my_unique_filename_callback($dir, $name, $ext){
    // Ваш код генерации уникального имени файла
    $new_name = 'new_filename' . $ext;
    return $new_name;
}
wp_handle_upload($file, $overrides);

Как ограничить разрешенные типы файлов для загрузки?

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

Пример:


$overrides = array(
    'mimes' => array(
        'jpg|jpeg|jpe' => 'image/jpeg',
        'gif' => 'image/gif',
        'png' => 'image/png',
    ),
);
$result = wp_handle_upload( $file, $overrides );

Как указать путь для сохранения загруженного файла?

Функция wp_handle_upload() позволяет указать путь для сохранения загруженного файла, используя параметр $overrides. Для этого необходимо передать ассоциативный массив с именами и значениями, которые нужно изменить.

Пример:


$overrides = array(
    'upload_path' => '/path/to/uploads',
);
$result = wp_handle_upload( $file, $overrides );

Как проверить, что параметр $_POST[‘action’] соответствует ожидаемому значению?

Функция wp_handle_upload() позволяет проверить, что параметр $_POST['action'] соответствует ожидаемому значению, используя параметр $overrides. Для этого необходимо передать ассоциативный массив с именами и значениями, которые нужно изменить.

Пример:


$overrides = array(
    'test_form' => true,
);
$result = wp_handle_upload( $file, $overrides );

Функция wp_handle_upload() является оберткой для функции _wp_handle_upload(). Она позволяет ограничивать разрешенные типы файлов для загрузки, указывать путь для сохранения загруженного файла и проверять параметр $_POST['action']. Используя параметр $overrides, можно изменять различные значения и настройки для загрузки файлов.

Связанные элементы

  • Функция wp_handle_sideload(): обрабатывает загрузку файла, который не является частью формы загрузки, например, файл, загруженный с помощью URL.
  • Хук wp_handle_upload_prefilter: позволяет изменить параметры загрузки файла перед их обработкой.
  • Хук wp_handle_upload: вызывается после успешной загрузки файла и позволяет выполнить дополнительные действия.
  • Класс WP_Upgrader: используется для обновления плагинов, тем и ядра WordPress. Включает методы для загрузки и установки файлов.
  • Класс WP_Image_Editor: используется для обработки изображений, включая изменение размера, обрезку и применение фильтров.
Обсуждение