Ссылка на скрипт принудительной загрузки в формате PDF - PullRequest
1 голос
/ 12 ноября 2009

Я генерирую динамические отчеты в формате PDF на PHP и у меня возникают проблемы со ссылками на Интернет.

Мои ссылки на скрипт PHP, который вызывает загрузку файлового вложения. Этот скрипт отлично работает во всех браузерах при доступе через браузер. Он также работает из PDF во всех браузерах, кроме Internet Explorer.

Вместо того, чтобы IE рассматривал файл в формате PDF, PNG или чем-то вроде этого, в приглашении на загрузку говорится, что тип документа: «HTML Plugin Document»

Если пользователь нажимает «Открыть» или «Сохранить», IE сообщает, что не может загрузить файл, и называет имя файла как «index2.php». Это начало URI адреса.

Указан правильный размер файла, поэтому я знаю, что он получает файл. Может быть, это проблема с заголовком?

Вот заголовок, который я создаю в сценарии загрузки:

            header("Expires: Mon, 26 Jul 1997 05:00:00 GMT;");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT;");
    header("Pragma: no-cache;");        // HTTP/1.0
    header('Content-Type: '.$file->file_mime_type.';');
    header("Content-Description: File Transfer");
    header("Cache-Control: public");
            header('Content-Disposition: attachment; filename="'.$file->file_name.'";');
    header('Content-Length: '.$file->file_size.';');
    header('Content-transfer-encoding: binary');

Любая информация будет принята с благодарностью.

Ответы [ 3 ]

5 голосов
/ 12 ноября 2009

Вот что я использую, и это доказало свою эффективность:

header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="'.$file->file_name.'"');
readfile($filename);
5 голосов
/ 12 ноября 2009

вы пробовали что-то подобное?

header('Content-Disposition: attachment; filename="'.$file->filename.'"');
4 голосов
/ 12 ноября 2009

Стоит упомянуть, что существует также известная проблема с несколькими версиями IE при передаче файлов по SSL, которая требует следующих действий:

header("Cache-Control: maxage=1");
header("Pragma: public");

Более подробную информацию об этой ошибке можно найти здесь: http://support.microsoft.com/kb/812935

...