При работе с файлами в PHP часто возникает необходимость получить их размеры для различных целей. В этой статье блога мы рассмотрим различные методы получения размера файла с помощью cURL в PHP. Мы углубимся в примеры кода и объясним каждый метод в разговорной и понятной для новичков форме.
Метод 1. Использование функции cURL filesize()
:
Библиотека cURL в PHP предоставляет удобную функцию под названием filesize()
, которая позволяет получить размер файла.. Вот простой фрагмент кода, демонстрирующий его использование:
<?php
$fileUrl = 'https://example.com/path/to/file.txt';
$ch = curl_init($fileUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_exec($ch);
$fileSize = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
curl_close($ch);
echo "The file size is: " . $fileSize . " bytes.";
?>
В этом примере мы инициализируем дескриптор cURL с помощью URL-адреса файла, устанавливаем некоторые параметры для получения только информации заголовка и выполняем запрос cURL. Наконец, мы извлекаем размер файла с помощью функции curl_getinfo()
с константой CURLINFO_CONTENT_LENGTH_DOWNLOAD
.
Метод 2: использование функции stream_get_meta_data()
.
Другой способ получить размер файла с помощью cURL в PHP — использовать функцию stream_get_meta_data()
. Этот метод позволяет получать различные метаданные, связанные с файловым потоком, включая размер файла. Вот пример, демонстрирующий этот подход:
<?php
$fileUrl = 'https://example.com/path/to/file.txt';
$ch = curl_init($fileUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$fileSize = null;
if ($headers = curl_getinfo($ch)) {
$stream = fopen($fileUrl, 'r');
$metaData = stream_get_meta_data($stream);
$fileSize = $metaData['unread_bytes'];
fclose($stream);
}
curl_close($ch);
echo "The file size is: " . $fileSize . " bytes.";
?>
В этом примере мы используем функцию stream_get_meta_data()
для получения метаданных файлового потока, включая непрочитанные байты. Мы открываем поток по URL-адресу файла и извлекаем размер файла из метаданных.
Метод 3. Использование функции curl_exec()
с обратным вызовом.
Функция curl_exec()
в cURL позволяет указать функцию обратного вызова для обработки полученных данных. Используя собственный обратный вызов, вы можете фиксировать размер файла по мере получения данных. Вот пример, демонстрирующий этот подход:
<?php
$fileUrl = 'https://example.com/path/to/file.txt';
$fileSize = null;
function handleData($ch, $data)
{
global $fileSize;
$fileSize += strlen($data);
return strlen($data);
}
$ch = curl_init($fileUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'handleData');
curl_exec($ch);
curl_close($ch);
echo "The file size is: " . $fileSize . " bytes.";
?>
В этом примере мы определяем функцию обратного вызова handleData()
, которая получает фрагменты данных по мере их получения. Мы увеличиваем переменную $fileSize
на длину каждого фрагмента, эффективно рассчитывая общий размер файла.
В этой статье мы рассмотрели несколько методов получения размера файла с помощью cURL в PHP. Мы рассмотрели использование функции filesize()
, функцию stream_get_meta_data()
и использование пользовательского обратного вызова с функцией curl_exec()
. Эти методы обеспечивают гибкость в зависимости от вашего конкретного варианта использования. Теперь вы можете легко получать размеры файлов, используя cURL в своих проектах PHP.