Главная » 2011 » Август » 26 » Как сделать чтобы файл скачивался по ссылке, а не открывался браузером?
18:32 Как сделать чтобы файл скачивался по ссылке, а не открывался браузером? |
Допустим, положили мы на веб-сервер файл "presentation.pps" или любой другой, и на какой-нибудь страничке разместили на него ссылку, чтоб другие могли скачать нашу презентацию. Так вот, если кто-то нажмёт на эту ссылку, то получит абракадабру в браузере с содержимым нашего файла. А ведь хотелось бы увидеть вместо этого окно для сохранения файла. Оказывается, чтобы браузер понял, что ему нужно скачать файл, ему нужно отправить с сервера специальный http-заголовок с примерно такой строчкой: "Content-Disposition: attachment; filename=presentation.pps" На php всё решается примерно таким кодом: $tmp_name = "presentation.pps"; if (file_exists($tmp_name)) { header('Content-Description: File Transfer'); header('Content-Type: application/x-zip-compressed'); header('Content-Disposition: attachment; filename='.basename($tmp_name)); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . filesize($tmp_name)); ob_clean(); flush(); readfile($tmp_name); die; } ?> Если вдруг появилось что-то похожее на Warning: Cannot modify header information - headers already sent by (output started at X:...down.php:1) in X::...down.php on line 4, значит скрипт уже что-то послал браузеру, и заголовок править уже бесполезно, о чём данная строчка и говорит, удалите все символы, в том числе пробелы, перед первым тегом Более подробно проблема обсуждается здесь http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=70674
|
Просмотров: 4160 |
Добавил: intell
| Рейтинг: 0.0/0 |
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]
|