(PHP 4, PHP 5)
readfile — Realizar la salida de un fichero
$filename
[, bool $use_include_path
= false
[, resource $context
]] )Lee un fichero y lo escribe en el buffer de salida.
filename
El nombre de fichero a ser leído.
use_include_path
Se puede usar el segundo parámetro opcional y establecerlo a TRUE
si se
desea buscar también el fichero en include_path.
context
Un resource de flujos de contexto.
Devuelve el número de bytes leídos del fichero. Si se produjo un
error, devuelve FALSE
y, a menos que la función fuese llamada como
@readfile(), se imprime un mensaje de error.
Ejemplo #1 Forzar un descarga usando readfile()
<?php
$fichero = 'mono.gif';
if (file_exists($fichero)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($fichero));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($fichero));
ob_clean();
flush();
readfile($fichero);
exit;
}
?>
El resultado del ejemplo sería algo similar a:
Nota:
readfile() no expondrá cuestiones de memoria, incluso al enviar ficheros grandes, por sí sola. Si se encuentra un error de memoria insuficiente asegúrese que el buffer de salida está desactivado con ob_get_level().
Se puede usar una dirección URL como nombre de archivo con esta función si los fopen wrappers han sido activados. Consulte fopen() para más información de como especificar el nombre de fichero. Consulte Protocolos y Envolturas soportados para ver enlaces con información sobre las diferentes habilidades que los wrappers tienen, notas de uso e información de cualquier variables predefinidas que pueden usarse.
Nota: Soporte para context fue añadido en PHP 5.0.0. Para una descripción de contexts, refiérase a Flujos.