PDA

Просмотр полной версии : Какой header нужен?


Fiery_Fenix
03.10.2004, 22:14
Собственной какой хидер выдать браузеру чтобы он открыл например пдф-ку или вордовский файл в _своем_окне_?
Парочка header("Content-type: ... "); readfile(...); не дает нужный результат :(
ЗЫ Где можно почитать про хидеры, в ПХП мануле там ничерта не написано толком.

Sych
03.10.2004, 23:21
100% гарантии ты не получишь - потому что не у всех пользователей будет стоять word или акробат реадер - для того что бы браузер окрывал в своем окне он должен понимать mime типы файлов и правильно их обрабатывать.

про хидеры смотри кас на протокол http

Hubbitus
03.10.2004, 23:29
Fiery_Fenix:
Парочка header("Content-type: ... "); readfile(...); не дает нужный результат
Почему же, очень даже дает нужный результат, если тип указан правильно. Для большинства случаев этого вполне достаточно. С другой стороны Вы должны быть уверены что браузер "знает" как открывать этот тип.

Почитать соответственно в стандарте RFC-2616 (ftp://ftp.isi.edu/in-notes/rfc2616.txt) (ну или ищите переводы)

Fiery_Fenix
04.10.2004, 01:19
Сенкс буду штудировать RFC...
Hubbitus:
Почему же, очень даже дает нужный результат, если тип указан правильно
Хм... может у меня браузер глючит (ИЕ6.0), но на application/pdf и пдф-ку соответственно он выдает пустой экран (ридер поставлен, версии 6.0), а на application/msword и док-файл дает запрос на сохранить/открыть файл :confused:

is_absent
04.10.2004, 10:26
посмотри тут
_http://www.imho.ws/showthread.php?t=68438

вот что тебе нужно для PDF
header("Content-type: application/octet-stream");

Fiery_Fenix
04.10.2004, 13:33
Не катит... Мне как раз наоборот надо, чтоб он открыл документ в _окне_браузера_, а с header("Content-type: application/octet-stream"); он предлагает открыть/сохранить. При чем сохранять - сохраняет, а открыть не может :(

is_absent
05.10.2004, 07:14
Fiery_Fenix
можешь выложить скрипт?

AleXXXSoft
05.10.2004, 09:04
я это делаю так:

$f="ИМЯ_ФАЙЛА_ЗДЕСЬ_С_ПУТЕМ";
$d="ИМЯ_ФАЙЛА_БЕЗ_ПУТИ";
$l=@filesize($f);
@header("Cache-control: private");
@header("Content-type: application/x-unknown"); // ЗДЕСЬ МОЖНО УКАЗАТЬ СВОЙ ТИП
@header("Content-length: $l");
@header("Content-Disposition: inline; filename=".$d);
@readfile($f);

Fiery_Fenix
06.10.2004, 01:30
Собственно код:

if ($_GET["action"]=="show"){
$vopr=mysql_query("SELECT type, name, filename FROM texts WHERE text_id='$text_id'");
$row=mysql_fetch_array($vopr);
$type=$row["text_type"];
$source=$path."/doc/".$row["filename"];
$l=@filesize($f);
@header("Cache-control: private");
@header("Content-type: $type");
@header("Content-length: $l");
@header("Content-Disposition: inline; filename=".$row["filename"]);
@readfile($source);}
А вот чего это чудо на pdf выдает:
<p>&nbsp;</p>
ЗЫ Может апачь у меня криво настроен?, или ИЕ...
ЗЗЫ Опера даже запускает Акробат ридер но тот матерится что не может найти какой-то handled window и убивается, вместе с оперой :)

is_absent
06.10.2004, 07:21
$l=@filesize($f);
откуда переменная $f взялась? :-)

почитай
_http://www.fpdf.org/en/FAQ.php#3
:) народ говорит, что это глюк IE

Fiery_Fenix
08.10.2004, 00:43
Короче, забил я на это дело, поставил хидер аттачмента и пусть юзвери разбираются дальше сами :) Вывод один: ИЕ в своем репертуаре :(
Тему можно считать закрытой. Всем спасибо.