(PHP 4, PHP 5, PHP 7)
readfile — Выводит файл
$filename
[, bool $use_include_path
= false
[, resource $context
]] )Читает файл и записывает его в буфер вывода.
filename
Имя читаемого файла.
use_include_path
Если вы хотите, что бы использовался поиск файла в include_path,
установите этот параметр в TRUE
.
context
Ресурс (resource) с контекстом потока.
Возвращает количество прочитанных из файла байт. В случае возникновения
ошибки вернёт FALSE
, и (если только функция не была вызвана как
@readfile()) выведет сообщение об ошибке.
Пример #1 Принудительная загрузка с помощью readfile()
<?php
$file = 'monkey.gif';
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
?>
Результатом выполнения данного примера будет что-то подобное:
Замечание:
readfile() сама по себе не приводит к каким-либо проблемам с памятью, даже при отправке больших файлов. При возникновении ошибки превышения памяти убедитесь, что буферизация вывода отключена с помощью ob_get_level().
Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция fopen wrappers. Смотрите более подробную информацию об определении имени файла в описании функции fopen(). Смотрите также список поддерживаемых оберток URL, их возможности, замечания по использованию и список предопределенных констант в Поддерживаемые протоколы и обработчики (wrappers).
Замечание: Поддержка контекста была добавлена в PHP 5.0.0. Для описания контекстов смотрите раздел Потоки.