Отдача файлов на скачивание в PHP

Разбираем алгоритм отдачи скриптом PHP в браузер файла для скачивания
<? //Указываем имя файла, с которым браузер будет предлагать сохранить файл. $fileName = 'image.png'; //Указываем путь до файла относительно корня сайта. $filePath = '/images/image.png'; //Получаем абсолютный путь до файла. $filePathAbs = $_SERVER['DOCUMENT_ROOT'] . $filePath; //проверяем не включена ли буферизация, если включена то сбрасываем ее, чтобы избежать переполнения памяти выделенной под скрипт //если этого не сделать файл будет читаться в память полностью! while (ob_get_level()) { ob_end_clean(); } //формируем заголовки что бы заставить браузер показать окно сохранения файла header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . $fileName); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); //Указываем размер файла header('Content-Length: ' . filesize($filePathAbs)); //читаем файл и выводим его содержимое на экран, тем самым согласно заголовкам, браузер вместо отображения содержимого файла на экране, предложит его сохранить readfile($filePathAbs); //После закрывающего тега PHP не должно быть символов, либо его можно вообще не закрывать ?>

Теги: PHP, Файл, Скачать