Я пытаюсь сделать файл, который отправляет файл PDF посетителю. У меня есть файл: download.php
и это его содержание:
header('Content-disposition: attachment; filename='.$_GET['file']); header('Content-type: application/pdf'); readfile($_GET['file']);
по какой-то причине файл отправляет пустой файл PDF 183 байта.
любой совет?
Благодарю.
Вы должны указать полный путь к файлу для readfile (), а не только имя файла.
Прежде всего, вам действительно нужно сначала проверить, существует ли файл с файлами_exists
Второе … это кажется довольно неуверенным, поскольку вы разрешаете указывать имя файла через глобальный параметр $ _GET. Что делать, если я попытаюсь загрузить ваш файл конфигурации, например download.php?file=../application/settings/config.ini
? Вы должны сначала отфильтровать параметр $ _GET и убедиться, что указанный файл разрешен для загрузки.
Попробуй это:
header('Pragma: public'); // required header('Expires: 0'); // no cache header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Cache-Control: private', false); header('Content-Type: application/pdf'); header('Last-Modified: ' . gmdate('D, d MYH:i:s', filemtime($filepath)) . ' GMT'); header('Content-disposition: attachment; filename=' . $pathinfo['filename'] . '.pdf'); header("Content-Transfer-Encoding: binary"); header('Content-Length: ' . filesize($filepath)); // provide file size header('Connection: close'); readfile($filepath); exit();