imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 30.09.2009, 18:49     # 1
AlexGluker
Guest
 
Сообщения: n/a

PHP headers

нужно открыть ворд документ, хранящийся в текстовом поле базы в виде base64encode

скриптом через window.open(url на представленный скрипт) открывается новое окно
Код:
....
ob_start();
header("Content-type: application/msword");
header('Content-Disposition: inline; filename="'.iconv_mime_decode($root.'template.doc').'";');
echo base64_decode(mysql_result($res,0,'ctext'));
ob_end_flush();
....
опера и мозилла открывают нормально, а мсексплорер выдает ошибку, не может найти файл.
подскажите, как победить?
 
Старый 01.10.2009, 14:11     # 2
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
"мсексплорер" какой версии?

И нафига здесь буферирование вывода, ведь с ним все равно ничего не делается в итога?
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 01.10.2009, 18:13     # 3
AlexGluker
Guest
 
Сообщения: n/a

осел версии 6 и выше.
а чем буферизация может помешать?

Последний раз редактировалось AlexGluker; 01.10.2009 в 18:16.
 
Старый 01.10.2009, 19:41     # 4
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Что за примеры? И что в них об осле говорится тогда?
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 01.10.2009, 21:18     # 5
BorLase
::VIP::
 
Аватар для BorLase
 
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150

BorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех Гуру
может, не совсем в тему...

но когда мне нужно было сделать что-то подобное в проекте (правда, отдать pdf), я поступил самым простым и банальным способом

поставил сниффер, зашел на сайт, с которого файл считывался на ура, подсмотрел заголовки, вписал их себе... вуаля! все работает

не проще ли подсмотреть, как устроен велосипед, чем изобретать его заново?
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people.
BorLase вне форума  
Старый 02.10.2009, 20:39     # 6
AlexGluker
Guest
 
Сообщения: n/a

опаньки.....
мозила HTTP Request Header
GET /***/openworddoc.php?id=6 HTTP/1.1
Host: www.***.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3

мозила HTTP Response Header
HTTP/1.1 200 OK
Date: Fri, 02 Oct 2009 15:24:00 GMT
Content-Type: application/msword; filename="8ebda540cbcc4d7336496819a46a1b68.doc"
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=5
Server: Apache
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Content-Disposition: attachment; filename="8ebda540cbcc4d7336496819a46a1b68.doc"
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Cache-Control: max-age=0
Expires: Fri, 02 Oct 2009 15:24:00 GMT

осел HTTP Request Header
GET /***/openworddoc.php?id=6 HTTP/1.1
Accept: */*
Accept-Language: ru

осел HTTP Response Header
HTTP/1.1 200 OK
Date: Fri, 02 Oct 2009 15:26:17 GMT
Content-Type: application/force-download; filename="b534ba68236ba543ae44b22bd110a1d6.doc"
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=5
Server: Apache
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Content-Disposition: attachment; filename="b534ba68236ba543ae44b22bd110a1d6.doc"
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Pragma: no-cache
Cache-Control: max-age=0
Expires: Fri, 02 Oct 2009 15:26:17 GMT

ответы Respons у мозилы и осла однаковые, а вот Request разные
если я правильно понимаю, осел не передает в запросе Host, может отсюда и ошибка? тогда как исправить?

добавлено через 3 минуты
выложил на площадку в инет, чтобы исключить возможные глюки локального xammp'a, при отключении буферизации ситуация с ослом не меняется
 
Старый 03.10.2009, 15:18     # 7
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Сообщение от AlexGluker Посмотреть сообщение
ответы Respons у мозилы и осла однаковые, а вот Request разные
если я правильно понимаю, осел не передает в запросе Host, может отсюда и ошибка?
Если ответ правильный, то пофигу. Но вообще странно, хост должен быть, раз контент отдается правильный. Да и HTTP/1.1 требует его. Чем сниферили?
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 03.10.2009, 16:36     # 8
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Вы какие-то странный, честное слово. Правильно BorLase, предложил почти... Почти, потому что смысл какой смотреть у кого-то, если подсмотреть можно заголовки с оригинала, когда сам .doc-файл отдается, и их же сэмулировать на PHP?

К тому же

Цитата:
Сообщение от AlexGluker Посмотреть сообщение
ответы Respons у мозилы и осла однаковые, а вот Request разные
Где же они одинаковые:

Цитата:
Сообщение от AlexGluker Посмотреть сообщение
Content-Type: application/msword; filename="8ebda540cbcc4d7336496819a46a1b68.doc"
Цитата:
Сообщение от AlexGluker Посмотреть сообщение
Content-Type: application/force-download; filename="b534ba68236ba543ae44b22bd110a1d6.doc"
Вы точно сниферили это на одном и том же скрипте???

Собственно, что касается самой проблемы, не хотел я с ослом возиться, все-таки пришлось... Если мы говорим о IE6, так посмотрите, он и doc-файл открывает точно также!
Вот файл реальный: http://ru.bir.ru/_temp/imho.ws/Headers/test.doc, вот он же через PHP - http://ru.bir.ru/_temp/imho.ws/Headers/test.php (исходник - http://ru.bir.ru/_temp/imho.ws/Headers/test.phps). Заметьте, та же Опера и Firefox понимает это все прекрасно.

Я думаю что IE6 (как минимум) придется просто выбросить... В принципе уже давно пора (особенно сейчас, когда такие монстры как youtube отказываются от его поддержки).
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 04.10.2009, 14:04     # 9
AlexGluker
Guest
 
Сообщения: n/a

application/msword были по умолчанию для мозилы и оперы
application/force-download временно подставлял для осла, замена force-download на msword ничего не изменяет, в осле та же самая ошибка открытия файла

тогда есть еще вопрос - в 7-8 версии осла эту ошибку исправили? ставить восьмерку себе не имею желания , может ктото сталкивался с этим?
 
Старый 04.10.2009, 14:52     # 10
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Сообщение от AlexGluker Посмотреть сообщение
application/force-download временно подставлял для осла, замена force-download на msword ничего не изменяет, в осле та же самая ошибка открытия файла
Так нету никакой ошибки-то! Файл открывается нормально, он предлагает его сохранить. Открыть не предлагает, но сохраняет-то нормально вполне.

Цитата:
Сообщение от AlexGluker Посмотреть сообщение
ставить восьмерку себе не имею желания
У меня не было желания вообще его ставить, любой, но приходится держать обоих под вайном...
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 06.10.2009, 16:53     # 11
BorLase
::VIP::
 
Аватар для BorLase
 
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150

BorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех Гуру
AlexGluker, а может, у тебя просто с осликом что-то не так? какое-то расширение криво встало, или качалка не до конца удалилась...

пробовал с другой машины качнуть файл?

если выложил в инет - кинь ссылку на скрипт, попробуем качнуть
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people.
BorLase вне форума  
Старый 07.10.2009, 00:07     # 12
AlexGluker
Guest
 
Сообщения: n/a

...
$handle = fopen($droot.'contracts\temp\\'.$fname.'.doc', 'x');
fwrite($handle,base64_decode(mysql_result($res,0,'ctext')));
fclose($handle);
header('Content-Type: application/msword');
header('Content-Disposition: attachment; filename="'.$fname.'.doc"');
readfile($droot.'contracts\temp\\'.$fname.'.doc');
unlink($droot.'contracts\temp\\'.$fname.'.doc');
...

сделал загрузку из файла напрямую - не открывает осел ((
но ведь это практически копия твоего примера

Hubbitus
да, твой пример работает, в локали тоже
но, небольшая просьба - можешь смоделировать мой случай? через window.open открой новое окно, а там загрузи документ

BorLase
чуть позже сваяю тестовую страницу на своем домене, затестим

добавлено через 7 минут
ob_start();
header('Content-Type: application/msword');
header('Content-Disposition: attachment; filename="'.$fname.'.doc"');
readfile($droot.'contracts\temp\\'.$fname.'.doc');
ob_end_flush();

добавил буфер - без изменений
 
Старый 07.10.2009, 11:49     # 13
BorLase
::VIP::
 
Аватар для BorLase
 
Регистрация: 09.09.2002
Адрес: Kiev
Пол: Male
Сообщения: 1 150

BorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех ГуруBorLase Отец (мать) всех Гуру
Цитата:
Сообщение от AlexGluker Посмотреть сообщение
BorLase
чуть позже сваяю тестовую страницу на своем домене, затестим
я думаю, это мало чем поможет; ИМХО, 99% что проблема в IE на твоей машине. попробуй переустановить или почистить адд-оны какой-нибудь тулзой

твой последний пример в виде
PHP код:
<?
ob_start
();
header('Content-Type: application/msword');
header('Content-Disposition: attachment; filename="test.doc"');
readfile('test.doc');
ob_end_flush();
?>
отработал в xampp у меня на отлично.

добавлено через 48 минут
PS: кстати, о птичках - у тебя $droot, случайно, не абсолютный путь содержит?

потому как замена readfile('test.doc'); на readfile('/test.doc'); выдала file not found:
PHP код:
<br />
<
b>Warning</b>:  readfile(/test.doc) [<a href='function.readfile'>function.readfile</a>]: 
failed to open streamNo such file or directory in <b>D:xampphtdocsload.php</bon line <b>5</b><br /> 
__________________
Great minds discuss ideas. Average minds discuss events. Small minds discuss people.
BorLase вне форума  
Старый 07.10.2009, 16:03     # 14
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Цитата:
Сообщение от AlexGluker Посмотреть сообщение
добавил буфер - без изменений
А для чего добавил?? И каких изменений стоило ждать?


Цитата:
Сообщение от AlexGluker Посмотреть сообщение
Hubbitus
да, твой пример работает, в локали тоже
но, небольшая просьба - можешь смоделировать мой случай? через window.open открой новое окно, а там загрузи документ
Ну я и говорю работает, отчего нет-то.

Могу конечно. А при чем здесь уже клиентский JavaScript???
http://ru.bir.ru/_temp/imho.ws/Headers/test.htm
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 09.10.2009, 15:01     # 15
AlexGluker
Guest
 
Сообщения: n/a

BorLase
да, в $droot полный путь, который взят из рабочего скрипта, дык опять же, мозила открывает без проблем

Hubbitus
для чего добавил? танцы с бубном

пример Hubbitus на моем осле работает, следовательно трабл гдето в моем скрипте, всем спасибо, ушел копать инет
 

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 03:44.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.