download_url()

Загружает URL в локальный временный файл с использованием API HTTP WordPress
Функция WordPress
INT 2.5.0
WordPress Icon

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

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

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

download_url( string $url, int $timeout = 300, bool $signature_verification = false ): string|WP_Error

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

  • $url (обязательный) — URL-адрес файла, который нужно загрузить.
  • $timeout (необязательный) — время ожидания запроса на загрузку файла в секундах. По умолчанию установлено значение 300 секунд.
  • $signature_verification (необязательный) — флаг, указывающий, нужно ли выполнять проверку подписи. По умолчанию установлено значение false.

Функция download_url() возвращает имя временного файла, в котором сохранен загруженный файл, в случае успешной загрузки. В случае ошибки функция возвращает объект WP_Error.

<?php
$url = 'https://example.com/file.zip'; // URL-адрес файла для загрузки
// Загрузка файла и получение имени временного файла
$file = download_url( $url, 600, true );
if ( is_wp_error( $file ) ) {
    // Обработка ошибки загрузки файла
    echo 'Ошибка загрузки файла: ' . $file->get_error_message();
} else {
    // Успешная загрузка файла
    echo 'Файл успешно загружен в: ' . $file;
}
?>

В приведенном выше примере мы используем функцию download_url() для загрузки файла по указанному URL-адресу. Мы передаем URL-адрес файла, время ожидания запроса в секундах (600) и флаг проверки подписи (true). Затем мы проверяем, успешно ли загружен файл, и выводим соответствующее сообщение.

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

Загрузка файла с удаленного сервера


$url = 'http://example.com/file.zip';
$result = download_url( $url );
if ( is_wp_error( $result ) ) {
    echo 'Ошибка загрузки файла: ' . $result->get_error_message();
} else {
    echo 'Файл успешно загружен. Путь к файлу: ' . $result;
}

В данном примере мы загружаем файл с удаленного сервера по указанному URL с помощью функции download_url(). Если загрузка прошла успешно, функция вернет путь к временному файлу, в котором сохранен загруженный файл. Если произошла ошибка, функция вернет объект класса WP_Error, который содержит информацию об ошибке.

Получение имени загруженного файла


$url = 'http://example.com/file.zip';
$result = download_url( $url );
if ( is_wp_error( $result ) ) {
    echo 'Ошибка загрузки файла: ' . $result->get_error_message();
} else {
    $filename = basename( $result );
    echo 'Файл успешно загружен. Имя файла: ' . $filename;
}

В данном примере мы загружаем файл с удаленного сервера и получаем его имя с помощью функции basename(). Функция basename() возвращает последний компонент имени файла из указанного пути.

Установка таймаута для запроса


$url = 'http://example.com/file.zip';
$timeout = 600; // Устанавливаем таймаут в 600 секунд
$result = download_url( $url, $timeout );
if ( is_wp_error( $result ) ) {
    echo 'Ошибка загрузки файла: ' . $result->get_error_message();
} else {
    echo 'Файл успешно загружен. Путь к файлу: ' . $result;
}

В данном примере мы устанавливаем таймаут для запроса в 600 секунд, передавая вторым аргументом функции download_url() значение переменной $timeout. По умолчанию таймаут равен 300 секундам.

Проверка подписи файла


$url = 'http://example.com/file.zip';
$signature_verification = true; // Включаем проверку подписи файла
$result = download_url( $url, 300, $signature_verification );
if ( is_wp_error( $result ) ) {
    echo 'Ошибка загрузки файла: ' . $result->get_error_message();
} else {
    echo 'Файл успешно загружен. Путь к файлу: ' . $result;
}

В данном примере мы включаем проверку подписи файла, передавая третьим аргументом функции download_url() значение переменной $signature_verification. По умолчанию проверка подписи файла отключена.

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

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

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

Для сохранения загруженного файла в определенной папке, вы можете использовать следующий пример кода:


$url = 'https://example.com/file.zip';
$timeout = 300;
$signature_verification = false;
$tmpfile = download_url($url, $timeout, $signature_verification);
if (!is_wp_error($tmpfile)) {
    $newfile = '/path/to/your/directory/file.zip';
    rename($tmpfile, $newfile);
}

В этом примере мы указываем URL файла, который мы хотим загрузить, а также задаем таймаут запроса и отключаем проверку подписи. Функция download_url() возвращает имя временного файла, в котором сохранен загруженный файл. Мы проверяем, что нет ошибок, и затем перемещаем файл в нужную нам папку с помощью функции rename().

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

По умолчанию, функция download_url() устанавливает таймаут запроса на 300 секунд (5 минут). Вы можете изменить этот таймаут, если вам требуется больше времени для загрузки файла.

Для установки таймаута запроса загрузки файла, вы можете использовать следующий пример кода:


$url = 'https://example.com/file.zip';
$timeout = 600; // Устанавливаем таймаут в 600 секунд (10 минут)
$signature_verification = false;
$tmpfile = download_url($url, $timeout, $signature_verification);
if (!is_wp_error($tmpfile)) {
    // Обработка загруженного файла
}

В этом примере мы устанавливаем таймаут запроса на 600 секунд (10 минут), передавая значение 600 вторым аргументом функции download_url(). Теперь у нас есть больше времени для загрузки файла.

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

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

Для проверки подлинности подписи загружаемого файла можно использовать параметр $signature_verification функции download_url(). По умолчанию этот параметр установлен в false, что означает, что проверка подписи не выполняется.

Чтобы выполнить проверку подписи загружаемого файла, нужно установить параметр $signature_verification в true. Например:


$url = 'https://example.com/file.zip';
$timeout = 300;
$signature_verification = true;
$result = download_url($url, $timeout, $signature_verification);
if (is_wp_error($result)) {
    // Обработка ошибки загрузки файла
} else {
    // Обработка успешной загрузки файла
}

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

При использовании функции download_url() в WordPress возможны ошибки загрузки файла. Чтобы обработать ошибку загрузки файла, можно использовать функцию is_wp_error(), которая проверяет, является ли результат функции download_url() объектом класса WP_Error.

Если результат является объектом класса WP_Error, значит произошла ошибка загрузки файла. В этом случае можно получить дополнительную информацию об ошибке с помощью метода get_error_message() объекта класса WP_Error. Например:


$url = 'https://example.com/file.zip';
$timeout = 300;
$result = download_url($url, $timeout);
if (is_wp_error($result)) {
    $error_message = $result->get_error_message();
    // Обработка ошибки загрузки файла
} else {
    // Обработка успешной загрузки файла
}

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

После успешной загрузки файла с помощью функции download_url() в WordPress можно получить имя загруженного файла. Имя файла возвращается в виде строки.

Чтобы получить имя загруженного файла, нужно присвоить результат функции download_url() переменной и затем использовать функцию basename() для извлечения имени файла из полного пути. Например:


$url = 'https://example.com/file.zip';
$timeout = 300;
$result = download_url($url, $timeout);
if (is_wp_error($result)) {
    // Обработка ошибки загрузки файла
} else {
    $file_name = basename($result);
    // Обработка успешной загрузки файла
}

Функция download_url() в WordPress позволяет загружать файлы с удаленного сервера на локальный сервер с использованием WordPress HTTP API. Она предоставляет возможность проверки подлинности подписи загружаемого файла, обработки ошибок загрузки и получения имени загруженного файла. Используйте эту функцию, чтобы упростить процесс загрузки файлов в WordPress и обеспечить безопасность загружаемых файлов.

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

  • Функция wp_remote_get(): Выполняет GET-запрос к указанному URL с использованием WordPress HTTP API.
  • Функция wp_remote_post(): Выполняет POST-запрос к указанному URL с использованием WordPress HTTP API.
  • Функция wp_remote_head(): Выполняет HEAD-запрос к указанному URL с использованием WordPress HTTP API.
  • Функция wp_remote_request(): Выполняет произвольный HTTP-запрос к указанному URL с использованием WordPress HTTP API.
  • Функция wp_remote_retrieve_body(): Получает тело ответа HTTP-запроса.
  • Функция wp_remote_retrieve_header(): Получает указанный заголовок из ответа HTTP-запроса.
  • Функция wp_remote_retrieve_headers(): Получает все заголовки ответа HTTP-запроса.
  • Функция wp_remote_retrieve_response_code(): Получает код ответа HTTP-запроса.
  • Хук http_api_debug: Хук, используемый для отладки HTTP-запросов.
  • Класс WP_Http: Класс, предоставляющий методы для выполнения HTTP-запросов.
Обсуждение