brodotsky
Новичок
Я проверял на своем сайте (не помню, какая там версия php).
Вывесил на сервере файл download.php
следующего содержания:
<?
$File=getenv ("QUERY_STRING");
header ("Content-Disposition:attachment;filename=$File");
header ("Content-Type:application/x-force-download;name=$File");
readfile ($File);
?>
(Подразумевается, что строка запроса
состоит только из имени файла.
Конструкцию вроде ...download.php?file=name
я счел излишней.
application/x-force-download
можно заменить на application/x-download.
Слово "force" вроде бы роли не играет.)
В адресной строке браузера (или в гиперссылке) я писал
...download.php?name.ext
В IE6 и Opera7 все было хорошо.
А вот NN7 заартачился.
Вместо music.kar он предлагал сохранить music.kar.php.
После нескольких экспериментов с строкой запроса
она начал сохранять как music.kar
(не помню, от чего получилась такая перемена).
Но зато у Netscape все вдруг превратилось в караоке.
text.txt стал сохраняться как text.txt.kar.
Такие вот глюки.
Нормальный результат дал следующий вариант.
В сценарии вместо $File=getenv ("QUERY_STRING");
я написал $File=name.ext.
В адресной строке браузера: ...download.php/
(Именно так, со слэшем на конце.)
Все заработало образцово.
Только я лишился возможности
передавать имя файла в качестве параметра.
Такие пироги.
А теперь немного помечтаю.
Создали ОДИН web-язык, который делает ВСЕ.
И ОДИНАКОВО поддерживается ВСЕМИ браузерами.
У этого языка есть как конструкции,
предназначенные для работы на сервере,
так и конструкции для работы на клиентских компьютерах.
Теперь возвращаюсь с небес на землю.
Мы имеем дело с уродливыми гибридами и монстрами.
Например, с таким:
HTML + PHP + MySQL + JavaScript + CSS + DOM +
+ "В клетке пляшет крокодил, как он в клетку угодил"...
Вывесил на сервере файл download.php
следующего содержания:
<?
$File=getenv ("QUERY_STRING");
header ("Content-Disposition:attachment;filename=$File");
header ("Content-Type:application/x-force-download;name=$File");
readfile ($File);
?>
(Подразумевается, что строка запроса
состоит только из имени файла.
Конструкцию вроде ...download.php?file=name
я счел излишней.
application/x-force-download
можно заменить на application/x-download.
Слово "force" вроде бы роли не играет.)
В адресной строке браузера (или в гиперссылке) я писал
...download.php?name.ext
В IE6 и Opera7 все было хорошо.
А вот NN7 заартачился.
Вместо music.kar он предлагал сохранить music.kar.php.
После нескольких экспериментов с строкой запроса
она начал сохранять как music.kar
(не помню, от чего получилась такая перемена).
Но зато у Netscape все вдруг превратилось в караоке.
text.txt стал сохраняться как text.txt.kar.
Такие вот глюки.
Нормальный результат дал следующий вариант.
В сценарии вместо $File=getenv ("QUERY_STRING");
я написал $File=name.ext.
В адресной строке браузера: ...download.php/
(Именно так, со слэшем на конце.)
Все заработало образцово.
Только я лишился возможности
передавать имя файла в качестве параметра.
Такие пироги.
А теперь немного помечтаю.
Создали ОДИН web-язык, который делает ВСЕ.
И ОДИНАКОВО поддерживается ВСЕМИ браузерами.
У этого языка есть как конструкции,
предназначенные для работы на сервере,
так и конструкции для работы на клиентских компьютерах.
Теперь возвращаюсь с небес на землю.
Мы имеем дело с уродливыми гибридами и монстрами.
Например, с таким:
HTML + PHP + MySQL + JavaScript + CSS + DOM +
+ "В клетке пляшет крокодил, как он в клетку угодил"...