Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > ошибка в загрузке PDF


Автор: Orient 3.9.2008, 20:21
Здравствуйте

Есть проблема в выдаче пдф-файла в брайзер. Я использую следующий код для того чтобы бразуер выдал диалог сохранения файла:

Код

$len = filesize($filename);
header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=$file1");
readfile($filename);


Он успешно работал какое-то время. Сегодня мне сообщили что теперь не выдается сообщений о сохранении файла.
А его содержимое выдается прямо в браузер. 
Не пойму в чем дело. Сдается мне что хозяева где-то в сервере что-то подкрутили?

Подскажите, направьте на путь истинный. Спасибо

Автор: Orient 4.9.2008, 09:14
Люди добрые! Ну неужели нет никаких мыслей???

Автор: gta4kv 4.9.2008, 09:16
да пожалуйста, пример с php.net:
Код

<?php
// downloading a file
$filename = $_GET['path'];

// fix for IE catching or PHP bug issue
header("Pragma: public");
header("Expires: 0"); // set expiration time
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
// browser must download file from server instead of cache

// force download dialog
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");

// use the Content-Disposition header to supply a recommended filename and
// force the browser to display the save dialog.
header("Content-Disposition: attachment; filename=".basename($filename).";");

/*
The Content-transfer-encoding header should be binary, since the file will be read
directly from the disk and the raw bytes passed to the downloading computer.
The Content-length header is useful to set for downloads. The browser will be able to
show a progress meter as a file downloads. The content-lenght can be determines by
filesize function returns the size of a file.
*/
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));

@readfile($filename);
exit(0);
?>


Добавлено через 51 секунду
прошу обратить внимание на заголовки 4-6, и 8

Автор: Orient 4.9.2008, 14:53
К сожалению, проблема не решена. содержимое пдф выдается в браузере как текст:

Добавлено через 12 секунд

%PDF-1.5 %ИЙКЛ 1 0 obj << /PageLayout /OneColumn /ViewerPreferences 2 0 R /Type /Catalog /PageMode /UseNone /Pages 3 0 R >>

Добавлено через 49 секунд
перед %PDF-1.5 идет пустая строка. это место видимо и есть камень приткновения, но вот как его излечить....

Автор: -=Ustas=- 4.9.2008, 15:39
Orient, у тебя еррор логи есть возможность посмотреть? что-то мне так кажется, что еще до заголовков идет какой-то вывод, либо пробел, либо перевод.

Автор: Orient 5.9.2008, 10:48
Проблема таки побеждена. Дествительно был вывод пустой информации в браузер.
Я один пхп-модуль с константами дал хозяевам на правку, вот они и направили, что после закрывающего тега ?> была пустая строка.

Вот такой вот получился конфузец. Всем спасибо за помощь и участие!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)