Skip to content
Advertisement

PHP – send file to user

I have a pdf file on disk that i need to send to a user when they make a request to a php script, what is the best way of doing this?

Advertisement

Answer

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;
}
?>
User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement