(PHP 4, PHP 5)
readfile — Выводит файл
$filename
[, bool $use_include_path
= false
[, resource $context
]] )Читает файл и записывает его в буфер вывода.
filename
Имя читаемого файла.
use_include_path
Вы можете установить в TRUE
необязательный второй аргумент,
если вы также хотите попытаться найти файл в include_path.
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('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>
Результатом выполнения данного примера будет что-то подобное:
Замечание:
readfile() сама по себе не приводит к каким-либо проблемам с памятью, даже при отправке больших файлов. При возникновении ошибки превышения памяти убедитесь, что буфферизация вывода отключена с помощью ob_get_level().
Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция fopen wrappers. Смотрите более подробную информацию об определении имени файла в описании функции fopen(). Смотрите также список поддерживаемых оберток URL, их возможности, замечания по использованию и список предопределенных констант в Поддерживаемые протоколы и обработчики (wrappers).
Замечание: Поддержка контекста была добавлена в PHP 5.0.0. Для описания контекстов смотрите раздел Потоки.