![]() |
PHP headers
нужно открыть ворд документ, хранящийся в текстовом поле базы в виде base64encode
скриптом через window.open(url на представленный скрипт) открывается новое окно Код:
....подскажите, как победить? |
"мсексплорер" какой версии?
И нафига здесь буферирование вывода, ведь с ним все равно ничего не делается в итога? |
осел версии 6 и выше.
а чем буферизация может помешать? |
Что за примеры? И что в них об осле говорится тогда?
|
может, не совсем в тему...
но когда мне нужно было сделать что-то подобное в проекте (правда, отдать pdf), я поступил самым простым и банальным способом поставил сниффер, зашел на сайт, с которого файл считывался на ура, подсмотрел заголовки, вписал их себе... вуаля! все работает не проще ли подсмотреть, как устроен велосипед, чем изобретать его заново? |
опаньки.....
мозила 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, при отключении буферизации ситуация с ослом не меняется |
Цитата:
|
Вы какие-то странный, честное слово. Правильно BorLase, предложил почти... Почти, потому что смысл какой смотреть у кого-то, если подсмотреть можно заголовки с оригинала, когда сам .doc-файл отдается, и их же сэмулировать на PHP?
К тому же Цитата:
Цитата:
Цитата:
Собственно, что касается самой проблемы, не хотел я с ослом возиться, все-таки пришлось... Если мы говорим о 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 отказываются от его поддержки). |
application/msword были по умолчанию для мозилы и оперы
application/force-download временно подставлял для осла, замена force-download на msword ничего не изменяет, в осле та же самая ошибка открытия файла тогда есть еще вопрос - в 7-8 версии осла эту ошибку исправили? ставить восьмерку себе не имею желания :biggrin:, может ктото сталкивался с этим? |
Цитата:
Цитата:
|
AlexGluker, а может, у тебя просто с осликом что-то не так? какое-то расширение криво встало, или качалка не до конца удалилась...
пробовал с другой машины качнуть файл? если выложил в инет - кинь ссылку на скрипт, попробуем качнуть |
...
$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(); добавил буфер - без изменений |
Цитата:
твой последний пример в виде PHP код:
добавлено через 48 минут PS: кстати, о птичках - у тебя $droot, случайно, не абсолютный путь содержит? потому как замена readfile('test.doc'); на readfile('/test.doc'); выдала file not found: PHP код:
|
Цитата:
Цитата:
Могу конечно. А при чем здесь уже клиентский JavaScript??? http://ru.bir.ru/_temp/imho.ws/Headers/test.htm |
BorLase
да, в $droot полный путь, который взят из рабочего скрипта, дык опять же, мозила открывает без проблем Hubbitus для чего добавил? танцы с бубном пример Hubbitus на моем осле работает, следовательно трабл гдето в моем скрипте, всем спасибо, ушел копать инет |
| Часовой пояс GMT +4, время: 01:19. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.