PHP – send file to user

Assuming that it’s on the server:

readfile() — Outputs a file

NOTE: Just writing

readfile($file);

won’t work. This will make the client wait for a response forever. You need to define headers so that it works the intended way. See this example from the official PHP manual:

<?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, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}
?>

Leave a Comment