Приветствую Вас Гость | RSS

Четверг, 09.05.2024, 02:30
Главная » 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
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]