Скачать pdf файл с php - PullRequest
       3

Скачать pdf файл с php

1 голос
/ 20 марта 2012

Я пытаюсь создать файл, который отправит PDF-файл посетителю. У меня есть файл: download.php

и это его содержание:

header('Content-disposition: attachment; filename='.$_GET['file']);
header('Content-type: application/pdf');
readfile($_GET['file']);

почему-то файл отправляет пустой pdf файл размером 183 байта.

любой совет?

спасибо.

Ответы [ 3 ]

1 голос
/ 20 марта 2012

Во-первых, вы действительно должны сначала проверить, существует ли файл с file_exists

Во-вторых ... это кажется довольно небезопасным, поскольку вы разрешаете указывать имя файла через глобальный параметр $ _GET.Что если я попытаюсь загрузить ваш конфигурационный файл, например download.php?file=../application/settings/config.ini?Сначала нужно отфильтровать параметр $ _GET и убедиться, что указанный файл разрешен для загрузки.

1 голос
/ 15 мая 2013

Попробуйте это:

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 M Y H: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();
1 голос
/ 20 марта 2012

Вы должны указать полный путь к файлу для readfile (), а не просто имя файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...